我正在尝试写一本电子书,但在管理章节/小节/小节的计数器方面遇到了问题。
body {
counter-reset: chapter;
counter-reset: section;
counter-reset: subsection;
}
h1.chapter::before {
counter-reset: section;
counter-reset: subsection;
counter-increment: chapter;
content: "Chapter " counter(chapter) ": ";
}
h2.section::before {
counter-reset: subsection;
counter-increment: section;
content: "Section " counter(chapter) "." counter(section) ": ";
}
h3.subsection::before {
counter-increment: subsection;
content: "Subsection " counter(chapter) "." counter(section) "." counter(subsection) ": ";
}
<h1 class="chapter"> The first chapter</h1>
<h2 class="section"> The first section </h2>
<h2 class="section"> The second section </h2>
<h3 class="subsection"> The first subsection </h3>
<h3 class="subsection"> The second subsection </h3>
<h1 class="chapter"> The second chapter</h1>
<h2 class="section"> The second chapter's first section</h2>
<h3 class="subsection"> The second chapter's first subsection </h3>
这就是显示的内容:
所以我不知道为什么chapter
和section
只是在'subsection'不重置的情况下不停留...
答案 0 :(得分:3)
您需要从伪元素中移走重置。另外,您可以在正文上重新设置counter-reset
的格式,以将所有这些都包含在一个语句中。
body {
counter-reset: chapter section subsection;
}
h1.chapter::before {
counter-increment: chapter;
content: "Chapter " counter(chapter) ": ";
}
h1.chapter {
counter-reset: section;
}
h2.section::before {
counter-increment: section;
content: "Section " counter(chapter) "." counter(section) ": ";
}
h2.section {
counter-reset: subsection;
}
h3.subsection::before {
counter-increment: subsection;
content: "Subsection " counter(chapter) "." counter(section) "." counter(subsection) ": ";
}
<h1 class="chapter"> The first chapter</h1>
<h2 class="section"> The first section </h2>
<h2 class="section"> The second section </h2>
<h3 class="subsection"> The first subsection </h3>
<h3 class="subsection"> The second subsection </h3>
<h1 class="chapter"> The second chapter</h1>
<h2 class="section"> The second chapter's first section</h2>
<h3 class="subsection"> The second chapter's first subsection </h3>
这是一个玩弄的小提琴: https://jsfiddle.net/muc0q9aw/
答案 1 :(得分:2)
每个元素只能使用 一个重置,否则您将像使用任何属性一样简单地用最后一个覆盖第一个。
您还应该注意需要使用counter-reset
的地方:
在自动重置后代元素或伪元素中的计数器的意义上,计数器是“自我嵌套的” 会创建该计数器的新实例。
然后
计数器的范围始于文档具有该计数器的“计数器重置” 的第一个元素,并包括元素的后代及其后代及其后代的同胞< / strong> ref
考虑到这一点,您不应该在伪元素内部重置计数器,而应该重置元素本身,以便兄弟元素具有良好的价值。
body {
counter-reset: chapter section subsection;
}
h1.chapter {
counter-reset: section subsection;
}
h1.chapter::before {
counter-increment: chapter;
content: "Chapter " counter(chapter) ": ";
}
h2.section {
counter-reset: subsection;
}
h2.section::before {
counter-increment: section;
content: "Section " counter(chapter) "." counter(section) ": ";
}
h3.subsection::before {
counter-increment: subsection;
content: "Subsection " counter(chapter) "." counter(section) "." counter(subsection) ": ";
}
<h1 class="chapter"> The first chapter</h1>
<h2 class="section"> The first section </h2>
<h2 class="section"> The second section </h2>
<h3 class="subsection"> The first subsection </h3>
<h3 class="subsection"> The second subsection </h3>
<h1 class="chapter"> The second chapter</h1>
<h2 class="section"> The second chapter's first section</h2>
<h3 class="subsection"> The second chapter's first subsection </h3>
您还可以像下面那样简化代码:
body {
counter-reset: chapter; /*we reset the chapter once*/
}
h1.chapter {
counter-reset: section; /*we reset the section each chapter*/
}
h1.chapter::before {
counter-increment: chapter;
content: "Chapter " counter(chapter) ": ";
}
h2.section {
counter-reset: subsection; /*we reset the subsection each section*/
}
h2.section::before {
counter-increment: section;
content: "Section " counter(chapter) "." counter(section) ": ";
}
h3.subsection::before {
counter-increment: subsection;
content: "Subsection " counter(chapter) "." counter(section) "." counter(subsection) ": ";
}
<h1 class="chapter"> The first chapter</h1>
<h2 class="section"> The first section </h2>
<h2 class="section"> The second section </h2>
<h3 class="subsection"> The first subsection </h3>
<h3 class="subsection"> The second subsection </h3>
<h1 class="chapter"> The second chapter</h1>
<h2 class="section"> The second chapter's first section</h2>
<h3 class="subsection"> The second chapter's first subsection </h3>