css-列表或标题的多级计数

利用css实现多级计数,比如1/1.1/1.1.1这种层层嵌套的计数,主要利用到counter-reset/counter-increment/counter/content/:before

一、标题类多级计数,比如下面的效果:

CSS代码如下: 

body{
    counter-reset: chapter section subsec;
}
h1{
    counter-reset: section subsec;
}
h2{
    counter-reset: subsec;
}
h1:before{
    counter-increment: chapter;
    content: counter(chapter,cjk-ideographic)"、";
}
h2:before{
    counter-increment: section;
    content: counter(chapter)"."counter(section)" ";
}
h3:before{
    counter-increment: subsec;
    content: counter(chapter)"."counter(section)"."counter(subsec)" ";
}

总结说明:

  1、在每一级标题的上级(父元素),比如h1的上级为body,那么在body上重置body下的所有计数器,h2的上级为h1,在h1上重置h1子元素的所有计数器。

  2、在每一层的:before伪类上递增该层计数器,比如h1的计数器为chapter,那么递增该计数器,可接受第二个参数表示步长,默认为1.

  3、在每一层的:before伪类上利用content和counter(计数器)显示从h1到该层的计数器,使用“.”分隔,也可以使用其他的分隔符,比如空格或者“-”。

  4、counter(计数器,type)第二个参数是list-style-type的关键字,默认为decimal。cjk-ideographic将显示为一二三这种形式。

二、嵌套的多级列表实现多级计数

形如以下的结构:

    <ol>
        <li>绪论</li>
        <li>正文
            <ol>
                <li>正文一</li>
                <li>正文二</li>
                <li>正文三
                    <ol>
                        <li>正文三内容一</li>
                        <li>正文三内容二</li>
                        <li>正文三内容三</li>
                    </ol>
                </li>
                <li>正文四
                    <ol>
                        <li>正文四内容一</li>
                        <li>正文四内容二</li>
                        <li>正文四内容三</li>
                    </ol>
                </li>
            </ol>
        </li>
        <li>总结</li>
    </ol>

正常显示如下:

如果为每个ol建一个类或者id,利用上面的方法也可以实现多级计数。但是有一种更快捷的方法。

CSS代码如下:

ol{
list-style: none; counter-reset: ordered; } li:before{ counter-increment: ordered; content: counters(ordered,".")" "; }

效果如下:

总结说明:

  1、根据CSS权威指南,计数器具有作用域的概念,每层嵌套都会为给定计数器创建一个新的作用域,即每层都创建了一个新的ordered实例。

  2、counters(ordered,“.”)将把各作用域的ordered计数器串起来,以.相连。可接受第三个参数,为list-style-type关键字,每层显示样式都会变为关键字规定样式。

  3、要为每层应用不同的关键字样式,可能还是需要用方法一。

posted @ 2017-01-02 13:20  ZhangCui  阅读(2159)  评论(0编辑  收藏  举报