【问题标题】:How to reset ordered list numbering in CSS如何在 CSS 中重置有序列表编号
【发布时间】:2019-01-30 10:18:20
【问题描述】:

如何重置嵌套有序列表的编号。

运行这个 sn-p,给我这样的输出:

  • 列表 1
  • 列表 2
  • 清单 3

    1. 列表 1
    2. 列表 2
    3. 清单 3

      • 列表 1
      • 列表 2
      • 清单 3

        3.1. List 1
        3.2. List 2
        3.3. List 3
                3.3.1. List 1
                3.3.2. List 2
                3.3.3. List 3
                        3.3.3.1. List 1
                        3.3.3.2. List 2
                        3.3.3.3. List 3
        

我希望 3.1 以 1 开头。我该怎么做? 我需要使用多个计数器吗?还是一个人就行? 我并没有真正习惯于使用 CSS 计数器。 如果它是一系列嵌套的有序列表,则该代码有效,但是当其中有一个无序列表时,它开始失败。它仍然继续上一个有序列表的编号。

ol {
    counter-reset: item 0;
    list-style: none;
}
ul {
    counter-reset: item "";
}
ul:first-child>li {
    counter-reset: item "";
}
ul>li:before {
    content: " ";
    margin-right: 1em;
}
ol ul li:last-child {
    counter-reset: item "";
}
ol>li:before {
    counter-increment: item;
    content: counters(item, ".")".  ";
}
<ul class="ul">
    <li class="li">List 1</li>
    <li class="li">List 2</li>
    <li class="li">List 3
        <ol class="ol">
            <li class="li">List 1</li>
            <li class="li">List 2</li>
            <li class="li">List 3<ul class="ul">
                    <li class="li">List 1</li>
                    <li class="li">List 2</li>
                    <li class="li">List 3
                        <ol class="ol">
                            <li class="li">List 1</li>
                            <li class="li">List 2</li>
                            <li class="li">List 3
                                <ol class="ol">
                                    <li class="li">List 1</li>
                                    <li class="li">List 2</li>
                                    <li class="li">List 3
                                        <ol class="ol">
                                            <li class="li">List 1</li>
                                            <li class="li">List 2</li>
                                            <li class="li">List 3</li>
                                        </ol>
                                    </li>
                                </ol>
                            </li>
                        </ol>
                    </li>
                </ul>
            </li>
        </ol>
    </li>
</ul>

编辑:即使有多个重置计数器,我仍然无法做到这一点。这有希望吗?

【问题讨论】:

  • @AndrewL64,谢谢,但我也希望嵌套的有序列表遵循之前的编号。因此,如果父级是有序列表,则编号将被继承,并且只有在它是有序列表时才会重置。
  • 哦,好的。让我试着摆弄小提琴。
  • 谢谢,我已经挣扎了很长时间了。如果我可以删除嵌套有序列表的3
  • 那么你有 3.1 你想有 1.3.1 还是只有 1?
  • @GrávujMiklósHenrich,如果父级不是有序列表,我想从 1 重新开始编号。

标签: html css listitem


【解决方案1】:

您可以查看我的案例:

我们只需要在第一个孩子处重置

.tos ol > li {
    counter-increment: listNumbering;
    list-style: none;
}
.tos ol > li:before {
    content: counter(listNumbering) '. ';
}
.tos ol > li:first-child {
    counter-reset: listNumbering;
}

【讨论】:

  • 是不是打破了之前的风格?我的意思是,如果你将它与默认的非嵌套列表项混合使用,它们可能会有不同的外观。 (顺便说一句,一个可行的解决方案,所以+1)
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多