counter-reset

**counter-reset** CSS 属性创建命名 CSS 计数器 并将其初始化为特定值。它支持创建从一开始就计数到元素数量的计数器,以及从元素数量倒数到一的计数器。

试一试

语法

css
/* 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-resetcounter-set 属性之间存在差异。使用 counter-reset 创建计数器后,可以使用 counter-set 属性调整其值。这与直觉相反,因为尽管名称如此,counter-reset 属性用于创建和初始化计数器,而 counter-set 属性用于重置现有计数器的值。

在具有更高特异性的选择器上设置 counter-increment: none 会覆盖在具有较低特异性的选择器上设置的命名计数器集的创建。

默认初始值

常规和反向计数器的默认初始值使得实现两种最常见的编号模式变得很容易:分别从一开始就计数到元素数量,以及从元素数量倒数到一。通过为命名计数器包含一个计数器值,您的计数器可以向上或向下计数,从一个整数值开始。

常规计数器如果未提供重置值,则默认为 0。默认情况下,常规计数器每次递增 1,这可以通过 counter-increment 属性进行调整。

css
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。默认情况下,反向计数器每次递减 1;这也可以通过 counter-increment 属性更改。

css
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 计数器。这些计数器会随着每个列表项自动增加或减少 1。counter-reset 属性可用于重置 list-item 计数器。与其他计数器一样,您可以使用 counter-increment 属性覆盖 list-item 计数器的默认增量值。

正式定义

初始值none
应用于所有元素
继承

计算值如指定
动画类型按计算值类型

正式语法

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

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

示例

覆盖list-item计数器

在本例中,counter-reset属性用于为隐式list-item计数器设置起始值。

HTML

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

CSS

使用counter-reset,我们将隐式list-item计数器设置为从除默认值1之外的值开始。

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

结果

使用counter-reset,我们将隐式list-item计数器设置为从3开始为每个ol计数。然后,第一个项目将编号为4,第二个项目将编号为5,依此类推,类似于在HTML中编写<ol start="4">的效果。

使用反向计数器

在以下示例中,我们声明了一个名为“priority”的反向计数器。该计数器用于对五个任务进行编号。

html
<ul class="stack">
  <li>Task A</li>
  <li>Task B</li>
  <li>Task C</li>
  <li>Task D</li>
  <li>Task E</li>
</ul>
css
li::before {
  content: counter(priority) ". ";
  counter-increment: priority -1;
}

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

在输出中,项目从5到1按反序编号。请注意,在代码中我们没有指定计数器的初始值。浏览器会在布局时使用计数器增量值自动计算初始值。

规范

规范
CSS 列表和计数器模块级别 3
# counter-reset

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅