【发布时间】:2019-06-17 08:23:55
【问题描述】:
我正在转换一个包含数千个页面的网站,以使用 CSS 计数器而不是标准的 HTML 列表表示。该项目的性质使得更改 CSS 而不是 HTML 变得容易得多。该站点使用许多不同类型的列表,其中一些使用ol 级别的start 属性和/或li 级别的value 属性来继续以前的列表和/或跳过值。
到目前为止,我已经能够成功地定位不同的列表并为它们提供我想要的所有自定义列表样式,甚至使用attr(start) 和attr(value) 更改编号列表的:before 内容中的计数器。我仍然想不通的是,当我需要一个字母列表从a 之外的某个地方开始或跳过一个值时,如何将这些数值转换为字母。
<ol class="lower-alpha" start="2">
<li>Explain...</li>
<li>Describe...</li>
<li value="5">Calculate...</li>
</ol>
ol.lower-alpha {
list-style: none;
counter-reset: special-little-letters;
& > li {
list-style: none;
&:before {
content: counter(special-little-letters,lower-alpha);
}
counter-increment: special-little-letters;
}
&[start] {
counter-reset: special-little-letters attr(start); /* doesn't work */
}
& > li[value]:before {
counter-reset: special-little-letters attr(value); /* doesn't work */
content: counter(special-little-letters,lower-alpha)
}
}
我想要一个包含b、c、e 的字母列表。检查结果时,我收到a、b、c 和错误“无效的属性值”。
【问题讨论】:
-
这可能会给你一个很好的解决方法:stackoverflow.com/a/55201090/8620333
-
@TemaniAfif 您的回答需要我在整个 HTML 中添加
style="--start:6",而li value没有任何内容。我的目标是避免更改 HTML 并同时处理ol start和li value。 -
就像我在开始时所做的那样,您可以通过使用另一个 CSS 变量来实现价值
-
@TemaniAfif 我无法更改 HTML。
-
如果有人遇到同样的问题并且还可以更改 HTML,这仍然是一种可能的解决方法。
标签: html css attributes css-counter