使用 CSS 计数器计算隐藏元素的数量

Ale*_*ein 3 css css-counter

如果设置了某个元素,如何才能不将其排除在计数之外display: none;

body {
  counter-reset: section;
}
.variant--name::before {
  counter-increment: section;
  content: counter(section) ": ";
}

.hidden {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)
<div class="variant--group">
<h3 class="variant--name">variant</h3>
</div>

<div class="variant--group hidden">
<h3 class="variant--name">variant</h3>
</div>

<div class="variant--group">
<h3 class="variant--name">variant</h3>
</div>
Run Code Online (Sandbox Code Playgroud)

Son*_*nce 6

由于.hidden给出了元素,display: none这就是计数器无法工作的原因,因为它实际上不在 dom 中。

我可能会添加一个类(以防万一.hidden其他需要的地方display: none):

.hiddenButAccessible {
  position: absolute;
  left: -9999px;
  max-height: 0px;
  overflow: hidden;
  opacity: 0;
}
Run Code Online (Sandbox Code Playgroud)

这是一个工作示例:

http://codepen.io/sonnyprince/pen/oxqzzL