--- title: CSS счётчики slug: Web/CSS/CSS_Counter_Styles/Using_CSS_counters tags: - CSS - CSS счётчики - вложенные счётчики translation_of: Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters original_slug: Web/CSS/CSS_Lists_and_Counters/Using_CSS_counters ---
CSS счётчики, в своей сущности, переменные CSS, значения которых могут быть инкрементированы при помощи CSS для отслеживания количества их использования. Они позволяют регулировать внешний вид контента, основываясь на его местоположении в документе. CSS счётчики реализованы в CSS 2.1 (ссылка на спецификацию).
Значение счётчика сбрасывается (инициализируется) при помощи {{cssxref("counter-reset")}}.
{{cssxref("counter-increment")}} может быть отображён на странице, используя функцию counter() или counters() в свойстве
{{cssxref("content")}}.
Для того, чтобы использовать CSS счётчики, сначала необходимо сбросить их значение (0 по умолчанию). Для того, чтобы отобразить значение счётчика - используйте функцию counter(). Следующий пример прибавляет в начале каждого h3 элемента
"Section <значение счётчика>:".
body { counter-reset: section; /* Устанавливает значение счётчика, равным 0 */ } h3::before { counter-increment: section; /* Инкрементирует счётчик*/ content: "Секция " counter(section) ": "; /* Отображает текущее значение счётчика */ }
Пример:
<h3>Вступление</h3> <h3>Основная часть</h3> <h3>Заключение</h3>
{{EmbedLiveSample("Использование_счётчиков", 200, 150)}}
CSS счётчики могут быть очень полезны для создания нумерованных списков, потому что новая сущность CSS счётчика автоматически создаётся в дочерних элементах. Используя функцию counters(), можно вставить строку между разными уровнями вложенных счётчиков. Пример:
ol { counter-reset: section; /*Создаёт новый счётчик для каждого тега <ol>*/ list-style-type: none; } li::before { counter-increment: section; /*Инкрементируется только счётчик текущего уровня вложенности*/ content: counters(section,".") " ";/*Добавляем значения всех уровней вложенности, используя разделитель '.'*/ /*Если необходима поддержка < IE8, необходимо убедиться, что после разделителя ('.') не стоит пробел*/ }
Объединим с данным HTML:
<ol> <li>item</li> <!-- 1 --> <li>item <!-- 2 --> <ol> <li>item</li> <!-- 2.1 --> <li>item</li> <!-- 2.2 --> <li>item <!-- 2.3 --> <ol> <li>item</li> <!-- 2.3.1 --> <li>item</li> <!-- 2.3.2 --> </ol> <ol> <li>item</li> <!-- 2.3.1 --> <li>item</li> <!-- 2.3.2 --> <li>item</li> <!-- 2.3.3 --> </ol> </li> <li>item</li> <!-- 2.4 --> </ol> </li> <li>item</li> <!-- 3 --> <li>item</li> <!-- 4 --> </ol> <ol> <li>item</li> <!-- 1 --> <li>item</li> <!-- 2 --> </ol>
Результат:
{{EmbedLiveSample("Вложенные_счётчики", 250, 350)}}
Specification | Status | Comment |
---|---|---|
{{SpecName("CSS3 Lists", "#auto-numbering", "CSS Counters")}} | {{Spec2("CSS3 Lists")}} | No change |
{{SpecName("CSS2.1", "generate.html#counters", "CSS Counters")}} | {{Spec2("CSS2.1")}} | Initial definition |