使用CSS计数器生成序数值?

she*_*nan 5 css css-counter

我猜这是不可能的,但想知道是否有人尝试使用CSS计数器成功生成序数(第一,第二,第三等)?

显然,这在JavaScript中是微不足道的,但是希望找到一种仅样式的解决方案。

Bhu*_*wan 7

如果您必须将th每个数字相加,那就很容易了。但在这种情况下,您需要更改第 1 个、第 2 个、第 3 个、第 21 个、第 22 个、第 23 个、第 31 个、第 32 个等......

所以你需要在这里使用第 n 个子概念。用于:nth-child定位元素。

您还需要使用:not选择器不更改第 11、12、13 个元素

body {
  margin: 0;
  font: 13px Verdana;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: item;
}

ul li {
  margin-bottom: 5px;
  position: relative;
}

ul li:before {
  counter-increment: item;
  content: counter(item)"th. ";
  color: red;
  font-weight: bold;
}

ul li:nth-child(10n+1):not(:nth-child(11)):before {
  content: counter(item)"st. ";
}

ul li:nth-child(10n+2):not(:nth-child(12)):before {
  content: counter(item)"nd. ";
}

ul li:nth-child(10n+3):not(:nth-child(13)):before {
  content: counter(item)"rd. ";
}
Run Code Online (Sandbox Code Playgroud)
<ul>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
  <li>listItem</li>
</ul>
Run Code Online (Sandbox Code Playgroud)