Spec-Zone.ru › CSS

CSS-свойство `counter-reset`

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Свойство counter-reset CSS создает именованные счетчики CSS и инициализирует их заданным значением. Оно позволяет создавать счетчики, которые считают от одного до числа элементов, а также счетчики, которые считают от числа элементов до одного.

Попробуйте

counter-reset: none;
counter-reset: chapter-count 0;
counter-reset: chapter-count;
counter-reset: chapter-count 5;
counter-reset: chapter-count -5;
<section class="default-example" id="default-example">
  <div class="transition-all" id="chapters">
    <h1>Alice's Adventures in Wonderland</h1>
    <h2>Down the Rabbit-Hole</h2>
    <h2 id="example-element">The Pool of Tears</h2>
    <h2>A Caucus-Race and a Long Tale</h2>
    <h2>The Rabbit Sends in a Little Bill</h2>
  </div>
</section>
#default-example {
  text-align: left;
  counter-reset: chapter-count;
}

#example-element {
  background-color: lightblue;
  color: black;
}

h2 {
  counter-increment: chapter-count;
  font-size: 1em;
}

h2::before {
  content: "Chapter " counters(chapter-count, ".") ": ";
}

Синтаксис

/* Create a counter with initial default value 0 */
counter-reset: my-counter;

/* Create a counter and initialize as "-3" */
counter-reset: my-counter -3;

/* Create a reversed counter with initial default value */
counter-reset: reversed(my-counter);

/* Create a reversed counter and initialize as "-1" */
counter-reset: reversed(my-counter) -1;

/* Create reversed and regular counters at the same time */
counter-reset: reversed(pages) 10 items 1 reversed(sections) 4;

/* Remove all counter-reset declarations in less specific rules */
counter-reset: none;

/* Global values */
counter-reset: inherit;
counter-reset: initial;
counter-reset: revert;
counter-reset: revert-layer;
counter-reset: unset;

Значения

Свойство counter-reset принимает список из одного или нескольких разделенных пробелами имен счетчиков либо ключевое слово none. Обычные счетчики указываются в формате <counter-name>, а обратные счетчики — в формате reversed(<counter-name>), где <counter-name> — это <custom-ident> или list-item для встроенного счетчика <ol>. После каждого имени счетчика можно указать <integer>, чтобы задать его начальное значение.

<custom-ident>
Задает имя счетчика, который нужно создать и инициализировать в формате <custom-ident>. Чтобы отметить счетчик как обратный, можно использовать функциональную запись reversed().
<integer>
Начальное значение для нового счетчика. Если оно не указано, по умолчанию используется 0.
none
Указывает, что инициализация счетчиков не должна выполняться. Это значение удобно для переопределения значений counter-reset в правилах с меньшей специфичностью.

Описание

Свойство counter-reset позволяет создавать обычные и, в поддерживающих их браузерах, обратные счетчики. Можно создать несколько обычных и обратных счетчиков, разделив их пробелами. Счетчик может быть задан отдельным именем или парой «имя-значение», разделенной пробелом.

Предупреждение: Свойства counter-reset и counter-set различаются. После создания счетчика с помощью counter-reset его значение можно изменить с помощью свойства counter-set. Это может показаться нелогичным: несмотря на свое название, свойство counter-reset используется для создания и инициализации счетчиков, а свойство counter-set — для сброса значения существующего счетчика.

Значение counter-increment: none, заданное для селектора с большей специфичностью, переопределяет создание именованного счетчика, заданное для селекторов с меньшей специфичностью.

Начальные значения по умолчанию

Начальные значения обычных и обратных счетчиков по умолчанию позволяют реализовать два наиболее распространенных способа нумерации: соответственно, отсчет от одного до числа элементов и отсчет от числа элементов до одного. Указав значение для именованного счетчика, можно задать отсчет вверх или вниз, начиная с целого числа.

Если начальное значение не указано, для обычных счетчиков по умолчанию используется 0. По умолчанию обычные счетчики увеличиваются на единицу; это можно изменить с помощью свойства counter-increment.

h1 {
  /* Create the counters "chapter" and "page" and set to initial default value.
     Create the counter "section" and set to "4". */
  counter-reset: chapter section 4 page;
}

Обратные счетчики

При создании обратного счетчика без указания значения он начинает отсчет со значения, равного числу элементов в наборе, и считает вниз, так что последний элемент в наборе получает значение 1. По умолчанию обратные счетчики уменьшаются на единицу; это также можно изменить с помощью свойства counter-increment.

h1 {
  /* Create reversed counters "chapter" and "section".
      Set "chapter" as the number of elements and "section" as "10".
      Create the counter "pages" with the initial default value. */
  counter-reset: reversed(chapter) reversed(section) 10 pages;
}

Встроенный счетчик list-item

У нумерованных списков (<ol>) есть встроенные счетчики list-item, управляющие нумерацией. Эти счетчики автоматически увеличиваются или уменьшаются на единицу для каждого элемента списка. Для сброса счетчиков list-item можно использовать свойство counter-reset. Как и для других счетчиков, значение приращения по умолчанию для счетчиков list-item можно переопределить с помощью свойства counter-increment.

Формальное определение

Начальное значение none
Применяется к всем элементам
Наследуется нет
Вычисленное значение как задано
Тип анимации по типу вычисленного значения

Формальный синтаксис

counter-reset = 
  [ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ |
  none

<counter-name> = 
  <custom-ident>

<integer> = 
  <number-token>

<reversed-counter-name> = 
  reversed( <counter-name> )

Примеры

Переопределение счетчика list-item

В этом примере свойство counter-reset используется для задания начального значения неявного счетчика list-item.

HTML

<ol>
  <li>First</li>
  <li>Second</li>
  <li>Third</li>
  <li>Fourth</li>
  <li>Fifth</li>
</ol>

CSS

С помощью counter-reset мы задаем неявному счетчику list-item начальное значение, отличное от значения по умолчанию 1:

ol {
  counter-reset: list-item 3;
}

Результат

С помощью counter-reset мы задаем неявному счетчику list-item начало отсчета с 3 для каждого ol. Тогда первый элемент будет иметь номер 4, второй — номер 5 и т. д., что аналогично эффекту от указания <ol start="4"> в HTML.

Использование обратного счетчика

В следующем примере мы объявили обратный счетчик с именем «priority». Счетчик используется для нумерации пяти задач.

<ul class="stack">
  <li>Task A</li>
  <li>Task B</li>
  <li>Task C</li>
  <li>Task D</li>
  <li>Task E</li>
</ul>
@supports not (counter-reset: reversed(priority)) {
  body::before {
    content: "Your browser doesn't support the reversed() function.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}
li::before {
  content: counter(priority) ". ";
  counter-increment: priority -1;
}

.stack {
  counter-reset: reversed(priority);
  list-style: none;
}

В результате элементы нумеруются в обратном порядке от 5 до 1. Обратите внимание, что в коде мы не указали начальное значение счетчика. Браузер автоматически вычисляет начальное значение на этапе компоновки, используя значение приращения счетчика.

Спецификации

Спецификация
Модуль списков и счетчиков CSS уровня 3
# counter-reset

Совместимость с браузерами

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
counter-reset
2
12
1
9.2
3
18
25
10.1
1
1.0
4.4
1
list-item
28Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
12
1
15Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
9Переопределение начального значения неявного счетчика list-item приводит к неправильным значениям функции counter(), используемой для создания содержимого, поскольку она реализована не полностью; см. ошибку 260436.
28Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
25
15Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
9Переопределение начального значения неявного счетчика list-item приводит к неправильным значениям функции counter(), используемой для создания содержимого, поскольку она реализована не полностью; см. ошибку 260436.
1.5Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
4.4Переопределение начального значения неявного счетчика list-item не влияет на формирование строки маркера списка по умолчанию (::marker); см. ошибку 338233131.
9Переопределение начального значения неявного счетчика list-item приводит к неправильным значениям функции counter(), используемой для создания содержимого, поскольку она реализована не полностью; см. ошибку 260436.
none
2
12
1
15
3
18
25
14
2
1.0
4.4
2
reset_does_not_affect_siblings
Нет
Нет
82
Нет
Нет
Нет
82
Нет
Нет
Нет
Нет
Нет
reversed
Нет
Нет
96
Нет
Нет
Нет
96
Нет
Нет
Нет
Нет
Нет

См. также

  • Руководство «Использование счетчиков CSS»
  • Свойство counter-increment
  • Свойство counter-set
  • Правило @ @counter-style
  • Функции counter() и counters()
  • Свойство content
  • Псевдокласс ::marker
  • Модуль списков и счетчиков CSS
  • Модуль стилей счетчиков 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/Properties/counter-reset

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API