vrm*_*mtm 10 css css3 css-counter
counter-reset当ol在div中时,我正在努力奋斗.代码段编号中的红色列表应为:
1,2,3
不:
3.1,3.2,3.3,
ol {
counter-reset: item;
list-style: none;
}
li:before {
counter-increment: item;
content: counters(item, ".")" ";
}Run Code Online (Sandbox Code Playgroud)
<ol>
<li>BBD</li>
<li>BBD
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</li>
<li>BBD</li>
</ol>
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
<div>
<ol style="color:red;">
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</div>Run Code Online (Sandbox Code Playgroud)
web*_*iki 11
您的问题不在于counter-reset属性,而在于内容属性和counters()功能.此函数atomaticaly为每个嵌套元素添加一个新实例.这对于嵌套ol元素非常有用,但是当第一个级别ol嵌套在任何其他元素中时,它还会添加一个计数器实例.
因此,您应该counter()在第一级ol元素上使用该函数,并在第二级元素上保留counters()(注意"s")函数:
有关嵌套计数器的 MDN的更多信息
ol {
counter-reset: item;
list-style: none;
}
li:before {
counter-increment: item;
content: counter(item)". ";
}
ol ol li:before{
content: counters(item,".") " ";
}Run Code Online (Sandbox Code Playgroud)
<ol>
<li>BBD</li>
<li>BBD
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</li>
<li>BBD</li>
</ol>
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
<div>
<ol style="color:red;">
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</div>Run Code Online (Sandbox Code Playgroud)
正如@harry所建议的那样,你也可以在ol元素的第一个子节点上设置计数器重置,使用li:first-child伪类或使用ol::before伪元素,例如:
ol{
list-style: none;
}
li:first-child{
counter-reset: item;
}
/* or
ol:before {
content: '';
counter-reset: item;
}
*/
li:before {
counter-increment: item;
content: counters(item, ".")" ";
}Run Code Online (Sandbox Code Playgroud)
<ol>
<li>BBD</li>
<li>BBD
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</li>
<li>BBD</li>
</ol>
<ol>
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
<div>
<ol style="color:red;">
<li>BBD</li>
<li>BBD</li>
<li>BBD</li>
</ol>
</div>Run Code Online (Sandbox Code Playgroud)