코딩 스쿨 CSS

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

CSS Counters

CSS Counters: 자동 번호 매기기와 카운터 기능

CSS 카운터는 HTML 요소에 자동으로 숫자를 붙여서 목록, 제목, 단락 등에 번호를 매길 수 있게 해주는 기능입니다. 자바스크립트 없이 CSS만으로 간단하게 번호를 관리할 수 있으며, 이를 통해 자동화된 번호 관리일관성 있는 스타일링을 구현할 수 있습니다.


1. CSS 카운터란?

CSS 카운터는 웹 페이지에서 자동으로 증가하는 값을 적용할 수 있는 CSS 기능입니다. 카운터는 특정 요소에서 시작하여 동적으로 증가하며, 목록, 헤딩, 등을 번호로 자동화하는 데 자주 사용됩니다.

카운터의 주요 메서드:

  • counter-reset: 카운터를 초기화.
  • counter-increment: 카운터를 증가.
  • content: ::before 또는 ::after 가상 요소를 사용하여 카운터 값을 출력.

2. 기본 카운터 사용 방법

먼저, 카운터를 초기화하고 증가시켜서 자동으로 번호를 할당하는 방법을 알아봅니다.

2.1 HTML 구조:

<div class="section">
    <h2>Introduction</h2>
    <p>This is the introduction section.</p>
</div>
<div class="section">
    <h2>Chapter 1</h2>
    <p>This is the first chapter.</p>
</div>
<div class="section">
    <h2>Chapter 2</h2>
    <p>This is the second chapter.</p>
</div>

2.2 CSS 기본 카운터 설정:

/* 카운터 초기화 */
body {
    counter-reset: section; /* 'section' 카운터를 초기화 */
}

/* 각 섹션에 카운터 값 증가 */
.section::before {
    counter-increment: section; /* 카운터 값 증가 */
    content: "Section " counter(section) ". "; /* 카운터 값을 표시 */
    font-weight: bold;
}

위 코드는 **body**에서 카운터를 초기화하고, 각 섹션 앞에 자동으로 번호를 붙이는 예시입니다. **counter-increment**는 카운터를 증가시키며, **content**를 사용해 카운터 값을 출력합니다.

결과:

Section 1. Introduction
Section 2. Chapter 1
Section 3. Chapter 2


3. 중첩된 카운터 사용

카운터는 중첩된 목록이나 제목 계층에서 서브 카운터를 사용할 수 있습니다. 예를 들어, **장(chapter)**과 **절(section)**로 구성된 중첩된 번호를 붙일 수 있습니다.

3.1 HTML 구조:

<div class="chapter">
    <h2>Chapter 1</h2>
    <div class="section">
        <h3>Section 1.1</h3>
        <p>This is the first section of chapter 1.</p>
    </div>
    <div class="section">
        <h3>Section 1.2</h3>
        <p>This is the second section of chapter 1.</p>
    </div>
</div>
<div class="chapter">
    <h2>Chapter 2</h2>
    <div class="section">
        <h3>Section 2.1</h3>
        <p>This is the first section of chapter 2.</p>
    </div>
</div>

3.2 CSS 중첩 카운터 설정:

/* 챕터 카운터 초기화 */
body {
    counter-reset: chapter; /* 'chapter' 카운터 초기화 */
}

/* 챕터 카운터 설정 */
.chapter {
    counter-increment: chapter; /* 챕터 카운터 증가 */
}

.chapter h2::before {
    content: "Chapter " counter(chapter) ". "; /* 챕터 번호 출력 */
    font-weight: bold;
}

/* 섹션 카운터는 각 챕터마다 리셋 */
.chapter {
    counter-reset: section; /* 챕터마다 섹션 카운터를 리셋 */
}

/* 섹션 카운터 설정 */
.section h3::before {
    counter-increment: section; /* 섹션 카운터 증가 */
    content: counter(chapter) "." counter(section) " "; /* 중첩된 번호 출력 */
    font-weight: bold;
}

위 코드는 각 챕터와 그 섹션을 번호로 구분하는 방식입니다. chapter 카운터는 각 챕터의 번호를 관리하고, section 카운터는 각 챕터의 섹션 번호를 관리합니다.

결과:

Chapter 1
  1.1 Section 1.1
  1.2 Section 1.2

Chapter 2
  2.1 Section 2.1


4. 카운터를 목록과 함께 사용

카운터는 **목록 항목(ul, ol)**에 사용해 자동 번호 목록을 만들 때 유용합니다. 기본적으로 HTML의 ol 태그자동 번호를 매기지만, CSS 카운터를 사용해 더 복잡한 스타일을 만들 수 있습니다.

4.1 HTML 구조:

<ul class="custom-list">
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
</ul>

4.2 CSS 목록 카운터 설정:

/* 리스트 카운터 초기화 */
.custom-list {
    counter-reset: list-item; /* 'list-item' 카운터 초기화 */
}

/* 리스트 항목 카운터 증가 및 스타일 적용 */
.custom-list li::before {
    counter-increment: list-item; /* 카운터 증가 */
    content: counter(list-item) ". "; /* 카운터 값 출력 */
    font-weight: bold;
    color: #4CAF50;
}

위 코드는 ul 목록 앞에 자동 번호를 추가하여 목록 항목에 번호를 붙이는 예시입니다. 번호 스타일을 커스터마이징하여 목록 항목에 번호가 붙은 스타일을 사용자 정의할 수 있습니다.

결과:

markdown
코드 복사
1. First item
2. Second item
3. Third item


5. 사용자 정의 카운터 스타일링

카운터 값을 다양한 스타일로 변경하거나, 이미지텍스트를 추가해 시각적인 강조를 할 수 있습니다. 이를 통해 번호 매김 방식에 창의적인 디자인을 적용할 수 있습니다.

5.1 CSS 사용자 정의 카운터 스타일링:

/* 카운터 값에 사용자 정의 스타일 적용 */
.section::before {
    counter-increment: section;
    content: "Part " counter(section) " - "; /* 'Part X -' 형식으로 출력 */
    font-size: 1.2rem;
    color: #FF5722;
}

.custom-list li::before {
    counter-increment: list-item;
    content: "✔ " counter(list-item) ". "; /* 체크 아이콘과 함께 출력 */
    color: green;
    font-weight: bold;
}

위 코드는 번호 앞에 텍스트를 추가하거나, 특정 기호(✔)를 추가하여 카운터 값을 시각적으로 강조하는 방식입니다. 이를 통해 더 직관적이고 스타일리시한 카운터를 만들 수 있습니다.


6. 카운터 시작 값 설정

카운터의 시작 값을 설정하려면 counter-reset 속성에 원하는 숫자를 지정할 수 있습니다. 이를 통해 특정 위치에서 카운터를 시작할 수 있습니다.

6.1 HTML 구조:

<div class="start-at-five">
    <p>Item 1</p>
    <p>Item 2</p>
</div>

6.2 CSS 카운터 시작 값 설정:

/* 카운터를 5에서 시작 */
.start-at-five {
    counter-reset: item 5; /* 카운터를 5에서 시작 */
}

.start-at-five p::before {
    counter-increment: item;
    content: counter(item) ". ";
}

위 코드는 카운터가 5에서 시작하도록 설정한 예시입니다.

이를 통해 특정한 시점에서 카운터를 시작할 수 있으며, 이는 목록 번호가 연속되지 않는 상황에서 유용하게 사용됩니다.

결과:

markdown
코드 복사
5. Item 1
6. Item 2


7. 카운터를 사용한 다단계 목록

CSS 카운터는 다단계 목록(예: 중첩된 목록)에 특히 유용합니다. 각 목록의 상위와 하위 레벨에 대해 별도의 카운터를 설정하여 자동으로 다단계 번호를 생성할 수 있습니다.

7.1 HTML 구조:

<ol class="multi-level-list">
    <li>First item
        <ol>
            <li>Sub item 1</li>
            <li>Sub item 2</li>
        </ol>
    </li>
    <li>Second item</li>
    <li>Third item</li>
</ol>

7.2 CSS 다단계 목록 설정:

/* 리스트 카운터 초기화 */
.multi-level-list {
    counter-reset: main-counter; /* 상위 카운터 초기화 */
}

.multi-level-list > li {
    counter-increment: main-counter; /* 상위 카운터 증가 */
}

.multi-level-list > li::before {
    content: counter(main-counter) ". "; /* 상위 카운터 표시 */
    font-weight: bold;
}

/* 하위 목록 카운터 */
.multi-level-list ol {
    counter-reset: sub-counter; /* 하위 카운터 초기화 */
}

.multi-level-list ol > li {
    counter-increment: sub-counter; /* 하위 카운터 증가 */
}

.multi-level-list ol > li::before {
    content: counter(main-counter) "." counter(sub-counter) " "; /* 중첩된 번호 표시 */
    font-weight: bold;
    color: #FF5722;
}

위 코드는 상위 목록과 하위 목록에 각각 카운터를 설정하여 다단계 번호가 자동으로 생성되도록 합니다. **main-counter**는 상위 항목의 번호를 관리하고, **sub-counter**는 하위 항목의 번호를 관리합니다.

결과:

markdown
코드 복사
1. First item
  1.1 Sub item 1
  1.2 Sub item 2
2. Second item
3. Third item


8. 페이지 섹션에 자동 번호 매기기

웹사이트의 페이지 섹션자동 번호를 매겨 사용자에게 페이지 흐름을 명확하게 전달할 수 있습니다. 이는 특히 단계별 가이드, 튜토리얼 등에서 유용하게 사용됩니다.

8.1 HTML 구조:

<div class="step">
    <h2>Step 1: Set up your account</h2>
    <p>To get started, set up your account by filling out the form.</p>
</div>

<div class="step">
    <h2>Step 2: Verify your email</h2>
    <p>Check your inbox for a verification email and follow the instructions.</p>
</div>

<div class="step">
    <h2>Step 3: Start using the service</h2>
    <p>Now you're ready to use the service. Enjoy!</p>
</div>

8.2 CSS 페이지 섹션 카운터 설정:

/* 카운터 초기화 */
body {
    counter-reset: step-counter;
}

/* 각 단계에 카운터 증가 및 표시 */
.step::before {
    counter-increment: step-counter;
    content: "Step " counter(step-counter) ": ";
    font-weight: bold;
    color: #4CAF50;
    font-size: 1.5rem;
    display: block;
    margin-bottom: 10px;
}

위 코드는 각 단계(step)에 대해 자동으로 번호를 매기는 방식입니다. 카운터 값을 사용해 각 섹션이 어떤 단계인지 시각적으로 명확하게 표시됩니다.

결과:

vbnet
코드 복사
Step 1: Set up your account
To get started, set up your account by filling out the form.

Step 2: Verify your email
Check your inbox for a verification email and follow the instructions.

Step 3: Start using the service
Now you're ready to use the service. Enjoy!


9. CSS 카운터를 사용한 목록 레이아웃 커스터마이징

CSS 카운터목록의 레이아웃을 더욱 정교하게 커스터마이징할 수 있도록 도와줍니다. 특히 번호가 매겨진 목록커스터마이즈하여 아이콘, 기호를 추가하거나, 복잡한 레이아웃을 만들 수 있습니다.

9.1 HTML 구조:

<ul class="custom-icon-list">
    <li>Task 1</li>
    <li>Task 2</li>
    <li>Task 3</li>
</ul>

9.2 CSS 커스텀 레이아웃:

/* 카운터 초기화 */
.custom-icon-list {
    counter-reset: task-counter;
    list-style: none; /* 기본 목록 스타일 제거 */
    padding-left: 0;
}

/* 각 항목에 커스텀 아이콘과 카운터 값 표시 */
.custom-icon-list li::before {
    counter-increment: task-counter;
    content: "✔ Task " counter(task-counter) ": "; /* 아이콘과 카운터 값 표시 */
    font-weight: bold;
    color: #4CAF50;
    margin-right: 10px;
}

위 코드는 목록 앞에 아이콘카운터 값을 함께 표시하여 목록 항목을 시각적으로 더 매력적으로 만듭니다. 이처럼 아이콘과 텍스트를 함께 사용하여 목록의 레이아웃을 자유롭게 커스터마이징할 수 있습니다.

결과:

arduino
코드 복사
✔ Task 1: Task 1
✔ Task 2: Task 2
✔ Task 3: Task 3


10. 카운터 리셋 및 스타일 관리

CSS 카운터는 원하는 대로 초기화하거나 재설정할 수 있습니다. 이를 통해 중간에서 번호가 다시 시작되거나, 새로운 카운터가 적용되는 상황을 만들 수 있습니다.

10.1 카운터 리셋 예시:

<div class="group">
    <p>Group 1, Item 1</p>
    <p>Group 1, Item 2</p>
</div>

<div class="group">
    <p>Group 2, Item 1</p>
    <p>Group 2, Item 2</p>
</div>

10.2 CSS 리셋 설정:

/* 카운터 초기화 */
.group {
    counter-reset: item-counter; /* 각 그룹마다 카운터 리셋 */
}

.group p::before {
    counter-increment: item-counter;
    content: "Item " counter(item-counter) ": ";
}

위 코드는 각 그룹마다 카운터를 리셋하여 각 그룹이 독립적으로 번호를 매길 수 있도록 설정한 예시입니다. 이를 통해 특정 섹션이나 그룹에서 다시 번호를 시작할 수 있습니다.

결과:

mathematica
코드 복사
Item 1: Group 1, Item 1
Item 2: Group 1, Item 2

Item 1: Group 2, Item 1
Item 2: Group 2, Item 2


  • *CSS 카운터(Counters)**는 웹 페이지에서 자동으로 번호를 매기고, 목록 항목섹션 제목을 동적으로 관리할 수 있는 강력한 도구입니다. 이 기능을 사용하면 번호 스타일링을 간단하게 자동화할 수 있고, 중첩된 목록이나 페이지 섹션에서 더욱 일관된 번호 체계를 유지할 수 있습니다.

CSS 카운터를 통해 다음과 같은 작업을 할 수 있습니다:

  • 목록 항목이나 페이지 섹션에 자동으로 번호를 매기기.
  • 다단계 번호 목록을 설정하여 중첩된 번호 체계를 구현.
  • 시각적 강조를 위한 커스텀 번호 스타일링.
  • 카운터 리셋번호 시작 값 조정.

이러한 기능을 활용하면 일관된 UI를 유지하면서도, 자동화된 번호 관리를 통해 효율적인 웹 페이지 설계가 가능합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com