gpt4 book ai didi

嵌套列表上的 CSS 计数器重置

转载 作者:技术小花猫 更新时间:2023-10-29 10:37:28 25 4
gpt4 key购买 nike

当 ol 在 div 中时,我正在努力处理 counter-reset。代码段编号中的红色列表应为:

1, 2, 3

不是:

3.1, 3.2, 3.3,

ol {
counter-reset: item;
list-style: none;
}
li:before {
counter-increment: item;
content: counters(item, ".")" ";
}
<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>

http://jsfiddle.net/1dab8xs7/1/

最佳答案

您的问题不在于 counter-reset 属性,而在于 content 属性和 counters() 函数。此函数自动为每个嵌套元素添加一个新实例。这对于嵌套的 ol 元素非常有用,但当第一级 ol 嵌套在任何其他元素中时,它还会添加一个计数器实例。

所以你应该在第一级 ol 元素上使用 counter() 函数并保留 counters() (注意“s ") 二级功能:

有关 MDN 的更多信息 nesting counters

ol {
counter-reset: item;
list-style: none;
}
li:before {
counter-increment: item;
content: counter(item)". ";
}
ol ol li:before{
content: counters(item,".") " ";
}
<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>


根据 @harry 的建议,您还可以使用 li:first-child 伪类或 ol::为 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, ".")" ";
}
<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>

关于嵌套列表上的 CSS 计数器重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31539617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com