Using css counters
今天在 W3C 查阅 background 标准时偶然发现这个属性。
counters 兼容性
为什么要首先谈它的兼容性?因为这个属性可以被所有浏览器支持(IE6/7 除外),是不是有了看下去的欲望^o^
定义
CSS counters 基于在文档中的位置来改变其显示的内容。比如,可以用它对网页中的标题自动计数。
CSS计数器本质上是由 CSS 在维护的变量,这些变量可能根据CSS规则增加以跟踪使用次数。
使用
首先,必须用 counter-reset为计数器设置一个初始值(默认为 0);
可以在之后赋予 counter-reset 一个特定的数值来改变计数器的值。
之后,就可以通过 counter-increment 对计数器的值进行递增或递减。counter 的 name 属性不能是 none、inherit、initial,否则,这条申明将被忽略。
显示 counter
counter 的值可以通过赋给 content 属性 counter() 或 counters() 函数来显示。
counter()函数有两种形式:
1  | counter(name)  | 
生成的文本是对给定的伪元素在给定的 name 范围内最里层级的计数的值,通过设定的 style 值对其格式化 (默认为decimal - 10进制)。
counters()函数同样有两种形式
1  | counters(name, string)  | 
生成的文本是对给定的伪元素在给定的 name 范围内所有计数器的值,从最外层级到最里层级通过设定的 string 字符分隔,通过设定的 style 值对其格式化 (默认为decimal - 10进制)。
基本用法举例
本例子将在每个标题的前面添加 Section [计数器的值]
1  | body {  | 
1  | <h3>Introduction</h3>  | 
前台显示结果:
1  | 1Introduction  | 
嵌套用法举例
css 计数器在有序列表中尤其有用,因为它会自动在子元素上创建计数器。使用 counters() 函数,分隔符会自动插入不同层级的嵌套计数中。
1  | ol {  | 
1  | <ol>  | 
前台显示结果:
1  | 1 item  | 
注意在 2.3 下的两个 ol 列表及其前台显示结果(2.3.1 和 2.3.2)