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、要为每层应用不同的关键字样式,可能还是需要用方法一。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM