视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
带序号的目录列表
2020-11-27 18:48:58 责编:小采
文档
 这次给大家带来带序号的目录列表,实现带序号的目录列表注意事项有哪些,下面就是实战案例,一起来看一下。

编写文档手册的时候,我们经常需要列表项前面的序号将上级各层的序号也附加在前面,如下图:

(图一)

但默认的<ol>列表,任何层次都是单个序号开始。如下图:

(图二)

要实现图一效果,方法之一是直接将序号部分作为列表内容的一部分,插入相应的HTML,可使用js批量插入序号。

生成的HTML结果类似这样

<ol> 
 <li>1. 列表项 
 <ol> 
 <li>1.1. 列表项 
 <ol> 
 <li>1.1.1 列表项</li> 
 <li>1.1.2 列表项</li> 
 <li>1.1.3 列表项</li> 
 </ol> 
 </li> 
 </ol> 
 </li> 
</ol>


如果既不想将序号硬写在html代码里,也不想引入js,那么只能从HTML属性和CSS两个方面来突破了。

遗憾的是,HTML元素属性并没有提供类似的接口。

经网友提示,知道了有个叫css counter 的概念,我孤陋寡闻了。

查询有关文档之后,CSS解决方案也就有了。

HTML代码如下:

<ol> 
 <li>列表项 
 <ol> 
 <li>列表项 
 <ol> 
 <li>列表项</li> 
 <li>列表项</li> 
 <li>列表项</li> 
 </ol> 
 </li> 
 </ol> 
 </li> 
</ol>

CSS代码如下:

ol {padding:0 0 0 20px;margin:0;list-style:none;} 
li:before {color:#f00; font-family:Times New Roman;} 
li{counter-increment:a 1;} 
li:before{content:counter(a)". ";} 
li li{counter-increment:b 1;} 
li li:before{content:counter(a)"."counter(b)". ";} 
li li li{counter-increment:c 1;} 
li li li:before{content:counter(a)"."counter(b)"."counter(c)". ";}

效果就是本篇开头的图一。

可是这个CSS写的实在是丑陋,有几级目录,就得写几层的CSS,显然不应该是这样子的。

继续阅读了相关文档,明确了counter-reset , counter(), counters() 之后,发现问题竟是异常的简单。

CSS代码如下:

ol {padding:0 0 0 20px;margin:0;list-style:none;counter-reset:a;} 
li:before {counter-increment:a;content:counters(a,".")". ";}

这样,无论多少层的嵌套列表,都能正确显示级联序号了,效果如本篇开头的图一。
需要指出的是,:before, counter-increment 等相关CSS特性不支持古老的IE6/IE7,但是IE8及以上是支持的很好的。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

href和src、link和@import有什么区别

css的绝对定位怎么兼容所有的分辨率

CSS3的属性transition、animation、transform

下载本文
显示全文
专题