CSS计数器(序列数字字符自动递增)详解

2020-05-02 08:02:22易采站长站整理
'A'
使用
inline
水平元素换行,此技术若有兴趣,可参考之前的“使用CSS(Unicode字符)让inline水平元素换行”一文。

 下面介绍下

counters()
方法。看似值多了个字母
s
, 但表意大变身。
counters
几乎可以说是嵌套计数的代名词。

我们平时的序号,不可能就只是

1,2,3,4,..
, 还会有诸如 
1.1,1.2,1.3,...
等的子序号。得,前者就是
counter()
干的事情,后者就是
counters()
干的事情。

基本用法为:

counters(name, string); /* MDN上说,要想IE8兼容,这里逗号后面的空格要去掉,但是鄙人IE11的IE8模式看,无此问题 */

其中,

string
参数为字符串(需要引号包围的)(必须参数),表示子序号的连接字符串。例如
1.1
string
就是
'.'
1-1
就是
'-'
.

看上去很简单。但是,如果理解不是很深刻,日后在使用肯定会遇到麻烦——“咦?怎么没有子序列,明明语法正确的啊?”首先,记住这一句话,“普照源是唯一的”,所以,如果你在只在

body
标签上设置
counter-reset
,就算里面的子元素嵌套了祖宗十八代,还是不会有任何嵌套序号出现的!所以,要想实现嵌套,必须让每一个列表容器拥有一个“普照源”,通过子辈对父辈的
counter-reset
重置、配合
counters()
方法才能实现计数嵌套效果。

闻名不如见面。您可以狠狠地点击这里:CSS计数器内嵌demo

也会遇到这样的麻烦——“咦,怎么子序列不按层级顺序来啊,命名语法正确啊?” 还是要记住这一句话:“一个容器里的普照源(reset)是唯一的”,所以,如果你不小心把计数显示和技术reset元素以兄弟元素形式放在一起(虽然HTML内容布局呈现是没有异常的),就很可能会出现计数序号乱入的情况。

闻名不如见面。您可以狠狠地点击这里:CSS计数器counters列表被reset乱入demo