gpt4 book ai didi

html - 使用 CSS 为嵌套部分自动编号

转载 作者:太空狗 更新时间:2023-10-29 13:42:38 25 4
gpt4 key购买 nike

假设我有一个这样的 HTML 或 XML 文档:

<body>
<section>
<h1>This should be numbered 1</h1>
<section>
<h1>This should be numbered 1.1</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 1.2</h1>
<p>blah</p>
</section>
</section>
<section>
<h1>This should be numbered 2</h1>
<section>
<h1>This should be numbered 2.1</h1>
<p>blah</p>
</section>
</section>
</body>

这只是一个说明性的例子;通常,一个部分中可以有任意数量的子部分,并且部分可以嵌套到任意深度。

是否可以使用 CSS(计数器和生成的内容)在每个部分标题的开头生成所需的部分编号?

我见过的这种事情唯一有效的例子是嵌套列表,但是你可以在其中将“counter-reset”附加到 OL 并将“counter-increment”附加到 LI。在这里,您似乎需要“部分”来重置其子部分,并增加其父部分,并且将这两个附加到一个元素名称是行不通的。

最佳答案

你应该使用 CSS counters在这种情况下。

更新解决方案(更好)。最后,一种更灵活的方法是重置 body 上的计数器,而不是 section:first-child 以及 h1< 的任何直接下一个兄弟节点上的计数器.

body,
section h1 + * {
counter-reset: section 0;
}

更新的解决方案。事实证明,我原来的解决方案并不像评论中指出的那样好。这是修改后的正确版本,它应该可以与任意数量的嵌套或同级部分一起正常工作。

section:first-child,
section h1 + section {
counter-reset: section 0;
}
section h1:before {
counter-increment: section;
content: counters(section, ".") " ";
}
<section>
<h1>This should be numbered 1</h1>
<section>
<h1>This should be numbered 1.1</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 1.2</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 1.3</h1>
<section>
<h1>This should be numbered 1.3.1</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 1.3.2</h1>
<p>blah</p>
</section>
</section>
<section>
<h1>This should be numbered 1.4</h1>
<p>blah</p>
</section>
</section>
<section>
<h1>This should be numbered 2</h1>
<section>
<h1>This should be numbered 2.1</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 2.2</h1>
<p>blah</p>
</section>
</section>


原始( buggy )。在这种情况下有一个棘手的部分:计数器应该为每个后续 section 递增。这可以通过 section + section 选择器来实现:

section {
counter-reset: section;
}
section + section {
counter-increment: section;
}
section h1:before {
counter-increment: section;
content: counters(section, ".") " ";
}
<section>
<h1>This should be numbered 1</h1>
<section>
<h1>This should be numbered 1.1</h1>
<p>blah</p>
</section>
<section>
<h1>This should be numbered 1.2</h1>
<p>blah</p>
</section>
</section>
<section>
<h1>This should be numbered 2</h1>
<section>
<h1>This should be numbered 2.1</h1>
<p>blah</p>
</section>
</section>

关于html - 使用 CSS 为嵌套部分自动编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663666/

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