CSS计数器的使用

CSS计数器最初只能用于ul和ol元素,但在CSS2.1中新增的:before、:after伪元素选择器(CSS3中推荐的写法为::before、::after)可以使CSS计数器应用于任何一个元素。


一、和CSS计数器相关的属性或函数

常用的和CSS计数器相关的属性或函数有counter-reset、counter-increment、content、counter()、counters().

counter-reset   
//用于声明(或者说创建、定义)计数器;
//规定计数器的作用域,在哪个元素写入这条样式,哪个元素就是该计数器的作用域;
//任何一个计数器使用之前都必须先进行counter-reset,否则无法工作;
//格式:counter-reset: <name> [initial value],其中name为计数器名称,initial value为初始值,该值可以为复数,默认为0;
//如果要在同一个定义域声明多个计数器,需将所有的计数器声明在同一个counter-reset内,eg:counter-reset: mycounter 1 yourcounter 0;
counter-increment
//用于部署计数器、规定计数步长;
//部署计数器,即规定该元素(伪元素)使用哪个计数器;
//格式:counter-increment: <name> [increment step],其中name为计数器名称,increment step为计数步长,该值可以为复数,默认为1;
//eg:counter-increment: mycounter 1;
content
//一般用于::before、::after伪元素选择器,规定生成的内容;
//在本次讨论范围中,计数器生成的值就放置在content中;
//使用计数器同时还可以连接其他表达式或字符串;
//eg:content: "第"counter(mycounter)"章";
counter()
//调用计数器
//作为content值的一部分;
//格式:counter(<name>[, list style type]),其中list style type和list-style-type样式同理,取list-style-type样式的值,默认为十进制阿拉伯数字;
//附:list-style-type样式可取的值: disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit;
//eg:counter(mycounter, lower-roman);
counters()
//递归调用计数器;
//用于实现类似Word中的多级目录功能;
//格式:counters(<name>[, link icon]),其中link icon为不同层级计数器的连接符;
/eg:counters(mycounter, ".");



二、CSS计数器使用方法

1.counter()的使用方法

<style type="text/css"> ul { counter-reset: mycounter 0; list-style-type: none; } li::before { counter-increment: mycounter; content: counter(mycounter)". "; //这里引号中的内容为链接到计数器生成值末尾的字符串 } </style>
<ul>
    <li>元素</li>
    <li>元素</li>
    <li>元素</li>
    <li>元素</li>
</ul>

运行结果:


2.counters()的使用方法

counters()一般用于多级目录,它将递归的调用计数器。

<style type="text/css"> ul { counter-reset: mycounter 0; list-style-type: none; } li::before { counter-increment: mycounter ; content: counters(mycounter,".")" "; } </style>
<ul>
    <li>元素</li>
    <li>元素
        <ul>
            <li>元素</li>
            <li>元素
                <ul>
                    <li>元素</li>
                    <li>元素</li>
                </ul>
            </li>
            <li>元素</li>
            <li>元素</li>
        </ul>
    </li>
    <li>元素</li>
    <li>元素</li>
</ul>




三、再次注意

因为CSS的覆盖特性,后定义的同名样式将覆盖先定义的样式,因此在同一个作用域声明多个计数器时,不要使用类似下面的写法:

counter-reset: mycounter 0;
counter-reset: yourcounter 0;   //错误的写法

因为两条样式同名,第二条样式覆盖第一条样式,所以只有yourcounter计数器被声明,而mycounter计数器没有被声明,那么mycounter计数器将无法工作。

正确的写法是:

counter-reset: mycounter 0 yourcounter 0;

你可能感兴趣的:(CSS计数器的使用)