CSS 전용 읽기 위치 표시기
이 게시물에서는 CSS에서 읽기 표시기를 빌드하는 방법에 대해 설명합니다. 여기에서 소스 코드를 확인할 수 있습니다CodePen demo.
코드
먼저 빈 HTML 요소가 하나만 필요합니다.
<div class="reading-indicator"></div>
이 태그는 페이지의 루트(절대 위치 지정을 사용하여 문서 높이 가져오기)로 이동한 다음
::before
및 ::after
의사 요소를 사용하여 진행률 표시줄을 "그립니다".참고:
<body>
및 ::before
를 사용하여 ::after...
에 직접 명시적 요소 없이 더 간단한 읽기 진행률 표시기를 만들 수 있지만 구식이라고 합니다. "예기치 않은 부작용, "그래서 나는 그것에 대한 요소를 만드는 것을 좋아합니다.읽기 지표 클래스의 스타일은 다음과 같습니다.
.reading-progress {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: calc(100% - 100vh);
z-index: -1;
overflow: hidden;
}
이 코드와 관련된 몇 가지 중요한 사항:
overflow: hidden
는 필수는 아니지만 알다시피 표시기 가장자리가 수직이 아니라 대각선이므로 100%에 도달하면 전체 막대가 전체 너비를 차지하지 않습니다. 이를 수정하기 위해 의사 요소를 컨테이너보다 약간 넓게 만들고 overflow: hidden을 사용하여 불필요한 수평 스크롤 막대를 방지합니다. 이 요소는 컨테이너일 뿐입니다. 읽기 표시기를 그리는 것은 의사 요소입니다.
.reading-progress::before {
content: "";
position: fixed;
top: 0;
left: -0.5%;
width: 101%;
height: 10px;
background: linear-gradient(90deg, #369, #396);
}
그러나 이것으로 우리는 단지 수평선을 갖게 됩니다. 그렇다면 사용자가 스크롤할 때 크기를 늘리거나 줄이려면 어떻게 해야 할까요? 그것이 속임수가 시작되는 곳입니다. 우리는
::before
부모 요소의 전체 크기와 대각선 배경, 배경 색상의 절반(나중에 문제가 되므로 주의) 및 나머지 절반을 차지하는 의사 요소를 사용합니다..reading-progress::after {
content: "";
position: absolute;
top: 0;
left: -0.5%;
width: 101%;
height: 100%;
background: linear-gradient(to bottom left, #fff 50%, #fff0 50%);
}
그리고 마지막(그러나 중요한) 스타일 변경: html 태그에 상대 위치를 지정해야 하므로 높이가 읽기 표시기에 영향을 미칩니다.
html {
position: relative;
}
그게 다야. 이것이 요령입니다.
::after
의사 요소가 ::after
를 완전히 덮지만 페이지를 스크롤하고 삼각형 배경에서 진행함에 따라 점점 더 많은 막대가 표시됩니다(고정된 위치에 있으므로 항상 보입니다).몇 가지 생각
읽기 표시기를 만드는 이 방법은 완벽하지 않습니다. 몇 가지 흥미로운 점과 몇 가지 단점이 있습니다. 찬반 양론의 짧은 목록은 다음과 같습니다.
장점:
단점:
약간의 조정을 통해 기사 수준에서 작동할 수 있습니다. 그러나 현재 구현에서는 다른 어떤 것보다 미화된 스크롤바 표시기에 가깝습니다. 실용적이지 않다는 의미는 아닙니다. 위에서 언급했듯이 일부 시나리오, 특히 휴대폰이나 태블릿에서 관여할 수 있습니다.
몇 가지 실패한 테스트를 수행했지만 여전히 다른 방법이 있어야 한다고 생각합니다(아마도
::before
및 배경 첨부?)
Reference
이 문제에 관하여(CSS 전용 읽기 위치 표시기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alvaromontoro/css-only-reading-position-indicator-1992텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)