【发布时间】:2016-02-23 11:58:07
【问题描述】:
我正在尝试使用 CSS 计数器来应用于一系列元素,但我很遗憾未能做到这一点。
HTML代码很简单:
body {
counter-reset: objgen;
}
span.general:before {
content: counter(objgen);
counter-increment: objgen;
}
span.general {
counter-reset: objesp;
font-weight: bold;
}
span.esp:before {
content: counter(objgen) "." counter(objesp);
counter-increment: objesp;
}
span.esp {
font-weight: bold;
}
<p>inputs: </p>
<p><span class="general"></span> <input type="text" value="test1"></p>
<p><span class="esp"></span> <input type="text" value="test2"></p>
<p><span class="esp"></span> <input type="text" value="test3"></p>
<p><span class="general"></span> <input type="text" value="test4"></p>
<p><span class="esp"></span> <input type="text" value="test5"></p>
<p><span class="esp"></span> <input type="text" value="test6"></p>
objgen 计数器运行正常,但 objesp 从不增加其值:它始终等于 1。我做错了什么?
问题是因为“esp”类的跨度没有嵌套在“通用”类的跨度中吗?
评论
似乎 Paulie_D 指出问题出在结构上,以下 HTML 可以正常工作(这不是唯一的可能性):
<span class="general"></span><input type="text" value="test1">
<span class="esp"></span><input type="text" value="test2">
<span class="esp"></span><input type="text" value="test3">
<span class="general"></span><input type="text" value="test1">
<span class="esp"></span><input type="text" value="test2">
<span class="esp"></span><input type="text" value="test3">
【问题讨论】:
-
我认为这与结构有关 - jsfiddle.net/wvLmzurj
-
因此,似乎计数器超出了
包装器的范围,但这很奇怪....标准是否可以这样工作?
-
我认为是这样,规范 (w3.org/TR/css-lists-3/#creating-counters) 相当复杂,但我认为这与按文档顺序排列的计数器继承有关。
-
"esp" 元素必须嵌套在 "gen" 下面才能正常工作。