css counters 计数器

让 css 像编程语言一样实现计数,IE 8 也支持的 css 计数器

css counters 是一个我们可以利用特定属性增减计算的变量。通过它,我们可以做一些类似编程语言的通用的迭代。

这个方式可以用于一些创造性的解决方案,包括一些重复代码的计数器。

为了控制计数器,你需要使用 counter-resetcounter-increment 属性,同时与 counter()counters() 函数配对。如果没有地方展示计数器,这个方法就没有任何存在的价值,对此,我们可以使用简化的 content 属性。

表现也很简单。假设你有一个无序列表,你想要计算列表项。在 ul 元素上指定一个计数器,并且在 li 元素上增加计数。

counter-reset 属性

我们可以使用 counter-reset 属性定义我们的计数器变量。对于这一点,我们可以任意命名并且可选择一个计数初始值。默认起始值是 0。这个应设置在父元素。

counter-increment 属性

通过使用 counter-increment 属性,我们可以增加或减少我们的计数器的值。这个属性也有第二个可选参数值,可以指定每次增减的幅度。

counter() 函数

counter() 函数主要为了展现计数器。展示的地方就是 content 属性,因为这是一个你可以将数据通过 css 回填到 html 的属性;第一个参数是计数器变量名,第二个参数是计数器类型(可选)。

注意:在 css 中没有连接运算符,所以如果你想连接 content 属性里的两个值,只能值用空格。

counters() 函数

这个函数和 counter() 函数一样。主要的不同是 counters() 你可以嵌套计数器到另一个,就像多级嵌套的 ul 列表。它有三个参数,第一个是计数器名,第二个是分隔符,第三个参数是计数器类型(可选)。


使用案例

案例1 - 文档 issue 自动追踪

当你有一些重复的元素,并且想去统计它们,这个方法可以方便你解决这个问题。

我们创建一个 counter-reset 在我们的 .container 父级元素。之后,我们给 issues 的类名设置 counter-increment 属性。最后,我们通过 content 属性在 .issues:before 元素上输出计数器的值。

See the Pen CSS Counter Example by Adam Laki (@adamlaki) on CodePen.

案例2 - 嵌套列表

使用 counters() ,我们可以让嵌套列表实现文本编辑器里的效果。

See the Pen MrjmLX by robin-l (@robin-l) on CodePen.

案例3 - 复选框选择计数器

使用 input 的 :checked 伪类,我们可以知道复选框是否选中,因此我们也能递增我们的计数器。

See the Pen OzRmGW by robin-l (@robin-l) on CodePen.

其他案例

0%