CSS counter

카테고리 IT/코딩 CSS

무찌마, 댓글

초고 2022. 4. 15.

 

블로그 초기 페이지에 사용하는 카운터 1, 2, 3 ...... 북클럽 스킨의 "cover-thumbnail-2"와 "cover-list"의 각 <li> 항목에 숫자를 부착한 것입니다.

 

원래는 자바스크립트로 구현했던 기능으로 script.js 파일에 코드를 추가하여 사용하였는 데, 구글 PageSpeed에서 웹페이지 로딩 속도를 측정할 때마다  대규모 화면 변화를 일으키는 요인 중 하나로 이것이 당첨되었습니다.

 

리스트가 전체 페이지를 차지하고 숫자를 부착할 때마다 화면을 갱신하는 등 좋지 않은 영향을 미친다는 것인데 확인하는 방법이 어려워서 통과! 철거하고 CSS로 대체하기로 결정! 아직까지 별다른 점검 사항이 없는 것 보니까 괜찮은 것 같습니다. 만족했겠죠?

 

3개의 CSS 속성을 묶어서 구현할 수 있는 기능입니다.

 

1. 카운터 이름을 netwareMore로 지정하고 디폴트 값인 0으로 초기화

counter-reset: netwareMore;

2. 지정한 netwareMore의 카운터 숫자 증감

counter-increment: netwareMore;

3. 지정한 netwareMore의 카운터 숫자를 부착

content: "목차 " counter(netwareMore) ": ";

 

카운터 이름은 "counter-set" 속성으로도 지정이 가능합니다. IE와 Safari 브라우저가 지원하지 않으며, 지원하는 브라우저도 상위 버전으로 올라가야 합니다.

counter-set - CSS: Cascading Style Sheets | MDN (mozilla.org)

 

카운터를 적용하면 다음과 같은 모습이 됩니다.

 목차 1:
 목차 2:
 목차 3:
 목차 4:

 

블로그에 간단하게 적용한 코드입니다.

 

/* CSS counter 적용 사례 */

.cover-list,
.cover-thumbnail-2 {
	counter-reset: list-number;
}

.cover-list ul li .title::before,
.cover-thumbnail-2 ul li .title::before {
	counter-increment: list-number;
	content: counter(list-number);
	margin-right: 0.5em;
	padding: 0 5px;
	background-color: #ddd;
}

 

CSS counter 기능을 2개의 그룹에 사용하였기 때문에 counter-reset도 2회 사용했습니다. 1회만 사용하면 숫자의 증감이 각각 1부터 시작하는 것이 아니라 계속 이어서 +1 증가합니다.

 

".cover-list ul li .title"의 앞("::before")과 
".cover-thumbnail-2 ul li .title"의 앞("::before")에 숫자를 추가합니다.

 

정확한 적용 방법과 정말 다양한 확장 기능은 아래 링크를 붙여 놓은 Mozilla 개발자 네트워크(MDN)의 관련 웹 문서를 참고하세요.


[참고] mdn web docs (영어) Using CSS Counters

[참고] mdn web docs (한글) CSS 카운터 사용하기

 

댓글