HTML 中使用奇数编号的有序列表

Ordered list in HTML that is numbered using odd numbers

在 HTML 中使用 <ol type="1">,我可以获得一个如下所示的有序列表:

  1. 我喜欢奶酪
  2. 饼干很好吃
  3. 奶油不错 ...

我如何使用 <ol> 来获得一个只有奇数编号的有序列表,就像这样?

1.I喜欢奶酪

3.Food很好

5.I向星星许愿...

我不认为这可以用普通的有序列表来实现,因为 the only attributes available seem to be the following(甚至包括 HTML5):

  • type(表示编号类型)
  • start(表示起始值)
  • reversed(表示列表是否倒序)

但可以使用 CSS 计数器来实现,如下面的代码片段所示。 CSS 计数器不是新事物 has very good browser support


用计数器实现这个非常简单,只需要以下步骤:

  • 在父级使用 counter-reset 属性 创建(重置)计数器。 counter-reset 属性 一般以计数器的名称和起始值作为参数。在这里,我使用 -1 作为起始值,因为在每个 li 处增量应为 2,并且起始值需要为 1(因此 -1+2 = 1)。
  • 每次遇到 li 时,计数器的值增加 2。这使得计数器只有奇数值。同样,counter-increment 属性 通常也有 2 个参数 - 一个是计数器名称,另一个是它应该递增的值。
  • 使用 :before 伪元素和 content 属性.
  • 在列表项之前显示计数器的值

ol {
  counter-reset: odd-numbers -1;
  list-style-type: none;
}
li {
  counter-increment: odd-numbers 2;
}
li:before {
  content: counter(odd-numbers) ". ";
}
<ol>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ol>


另一个不设置 -1 作为起始值的选项是使用 li:first-child 选择器并将计数器仅增加 1(默认值,因此不需要在 counter-increment 中指定).对于 li 的其余部分,我们可以将其递增 2。

ol {
  counter-reset: odd-numbers;
  list-style-type: none;
}
li:first-child {
  counter-increment: odd-numbers;
}
li {
  counter-increment: odd-numbers 2;
}
li:before {
  content: counter(odd-numbers) ". ";
}
<ol>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ol>

一个解决方案是使用此 css 规则,它隐藏偶数元素。

li:nth-child(2n) {
  visibility: hidden;
  position: absolute;
}

然后,偶数规则之间有空格li

<ol>
<li>1</li>
<li></li>
<li>3</li>
<li></li>
...
</ol>