CSS-правило @counter-style
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с сентября 2023 года.
@counter-style CSS-правило позволяет расширять предопределённые стили списков и определять собственные стили счётчиков, не входящие в предопределённый набор. Правило @counter-style содержит дескрипторы, определяющие, как значение счётчика преобразуется в строковое представление.
Хотя CSS предоставляет множество полезных предопределённых стилей счётчиков, правило @counter-style предлагает неограниченные возможности для создания счётчиков. Это правило отвечает потребностям мировой типографики, позволяя авторам определять собственные стили счётчиков, когда предопределённые стили не подходят.
Синтаксис
@counter-style thumbs {
system: cyclic;
symbols: "\1F44D";
suffix: " ";
}
Правило @counter-style идентифицируется по имени стиля счётчика, а стиль именованного счётчика можно настроить с помощью <declaration-list>, состоящего из одного или нескольких дескрипторов и их значений.
Имя стиля счётчика
-
<counter-style-name> -
Задаёт имя стиля счётчика. Оно указывается без кавычек в виде чувствительного к регистру
<custom-ident>. Значение не должно быть равноnone. Как и любой пользовательский идентификатор, имя стиля счётчика не может быть ключевым словом CSS широкого действия. Избегайте других перечислимых значений свойств CSS, включая значения свойств списков и стилей счётчиков. Именем счётчика не может быть значение свойстваlist-style-type, нечувствительное к регистру:decimal,disc,square,circle,disclosure-openилиdisclosure-closed.Примечание: Непереопределяемые имена стилей счётчиков
decimal,disc,square,circle,disclosure-openиdisclosure-closedнельзя использовать в качестве имён пользовательских счётчиков. Однако они допустимы в других контекстах, где ожидается тип данных<counter-style-name>, например вsystem: extends <counter-style-name>.
Дескрипторы
-
system - Задаёт алгоритм преобразования целочисленного значения счётчика в строковое представление. Если значение равно
cyclic,numeric,alphabetic,symbolicилиfixed, необходимо также задать дескрипторsymbols. Если значение равноadditive, необходимо также задать дескрипторadditive-symbols. -
symbols - Задаёт символы для представления маркеров. Символами могут быть строки, изображения или пользовательские идентификаторы. Этот дескриптор обязателен, если дескриптор
systemимеет значениеcyclic,numeric,alphabetic,symbolicилиfixed. -
additive-symbols - Определяет аддитивные кортежи для аддитивных систем. В большинстве алгоритмов для построения представления маркера используются символы, заданные дескриптором
symbols, однако аддитивные системы счётчиков, например римские цифры, состоят из последовательности взвешенных символов. Этот дескриптор представляет собой список символов счётчика с соответствующими неотрицательными целочисленными весами, расположенными в порядке убывания веса. Дескриптор обязателен, если дескрипторsystemимеет значениеadditive. -
negative - Задаёт символы, которые добавляются перед представлением счётчика или после него, если значение отрицательное.
-
prefix - Задаёт символ, добавляемый перед представлением маркера. Префиксы добавляются к представлению на заключительном этапе, перед любыми символами, добавленными к отрицательным значениям счётчика дескриптором
negative. -
suffix - Задаёт символ, который, подобно префиксу, добавляется после представления маркера. Суффиксы располагаются после представления маркера, в том числе после любых символов, добавленных к отрицательным значениям счётчика дескриптором
negative. -
range - Определяет диапазон значений, для которых применяется стиль счётчика. Если стиль счётчика используется для представления значения за пределами диапазона, заданного этим дескриптором, вместо него будет применён стиль
fallback. -
pad - Используется, когда представления маркеров должны иметь минимальную длину. Например, если требуется, чтобы счётчики начинались с 01 и далее шли 02, 03, 04 и т. д., следует использовать дескриптор
pad. Для представлений, превышающих заданное значениеpad, маркер создаётся обычным образом. -
speak-as - Описывает, как синтезаторы речи, например программы экранного доступа, должны озвучивать стиль счётчика. Например, значение маркера элемента списка можно озвучить как число или букву в нумерованных списках либо как звуковой сигнал в ненумерованных списках — в зависимости от значения этого дескриптора.
-
fallback - Задаёт имя счётчика, к которому следует обратиться, если указанная система не может построить представление значения счётчика или если значение выходит за пределы заданного
range. Если резервный счётчик также не может представить значение, используется его резервный вариант, если он задан. Если резервные счётчики не описаны или цепочка резервных систем не может представить значение счётчика, в конечном итоге будет использован стильdecimal.
Формальный синтаксис
Примеры
Задание символов с помощью counter-style
@counter-style circled-alpha {
system: fixed;
symbols: Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ;
suffix: " ";
}
Приведённое выше правило стиля счётчика можно применить к спискам следующим образом:
.items {
list-style: circled-alpha;
}
Приведённый выше код создаёт следующий результат:
<ol class="items"> <li>one</li> <li>two</li> <li>three</li> <li>four</li> <li>five</li> </ol> <p>...</p> <ol class="items" start="25"> <li>twenty-five</li> <li>twenty-six</li> <li>twenty-seven</li> <li>twenty-eight</li> </ol>
Другие примеры смотрите на демонстрационной странице (код).
Готовые стили счётчиков
В документе Готовые стили счётчиков собрано более 100 фрагментов кода counter-style. В этом документе представлены счётчики, отвечающие потребностям языков и культур всего мира.
Конвертер стилей счётчиков использует этот список для тестирования и создания кода стилей счётчиков, который можно копировать и вставлять.
Спецификации
| Спецификация |
|---|
| CSS Counter Styles Level 3 # the-counter-style-rule |
Совместимость с браузерами
| Настольные устройства | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | |
counter-style |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
additive-symbols |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
fallback |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
negative |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
pad |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
prefix |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
range |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
speak-as |
91 |
91 |
33 |
77 |
Нет |
91 |
33 |
64 |
Нет |
16.0 |
91 |
Нет |
suffix |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
symbols |
91Не поддерживает<image> в качестве значения дескриптора symbols. |
91Не поддерживает<image> в качестве значения дескриптора symbols. |
33Не поддерживает<image> в качестве значения дескриптора symbols. |
77Не поддерживает<image> в качестве значения дескриптора symbols. |
17 |
91Не поддерживает<image> в качестве значения дескриптора symbols. |
33Не поддерживает<image> в качестве значения дескриптора symbols. |
64Не поддерживает<image> в качестве значения дескриптора symbols. |
17 |
16.0Не поддерживает<image> в качестве значения дескриптора symbols. |
91Не поддерживает<image> в качестве значения дескриптора symbols. |
17 |
system |
91 |
91 |
33 |
77 |
17 |
91 |
33 |
64 |
17 |
16.0 |
91 |
17 |
См. также
counter()counters()symbols()-
list-style,list-style-image,list-style-position,list-style-type - Модуль стилей счётчиков CSS
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@counter-style