用value属性可为单个指定序号,后续自动+1递增;start设于上控制整体起始值;二者原生支持、语义清晰、无障碍友好,优于css counter()。

直接用 value 属性就能给单个 <li> 指定具体序号,浏览器会自动延续后续编号——这是最轻量、语义最清晰的方式,无需 CSS 计数器或 JS。
用 value 属性设置某一项的起始编号
当需要跳过默认递增逻辑(比如第 3 项要显示为 “100”),value 是唯一原生支持的 HTML 属性:
-
value只作用于它所在的那个<li>元素,不影响前面的项 - 后续
<li>会从该value值开始继续 +1 递增(不是从 1 重新计) - 必须配合
<ol></ol>使用;在<ul></ul>中写value无效
示例:
<ol> <li>第一项(显示 1)</li> <li value="10">第十项(显示 10)</li> <li>第十一项(显示 11)</li> <li>第十二项(显示 12)</li> </ol>
start 属性控制整个列表的起始值
start 适用于所有项都需偏移起始编号的场景,比如“从第 5 步开始”:
- 它设在
<ol></ol>标签上,影响整组<li> - 值必须是整数(正负均可),不能是字母或罗马数字
- 与
value不冲突:若某<li>有value,则以value为准,start对该项失效
示例:
<ol start="5"> <li>第五项</li> <li>第六项</li> <li value="20">第二十项</li> <li>第二十一项</li> </ol>
渲染结果为:5、6、20、21
为什么不用 CSS counter() 来指定序号
虽然 counter-reset/counter-increment 看似更灵活,但实际容易出问题:
- 无法保证与屏幕阅读器同步——读屏软件只认
<ol></ol>的原生语义,不解析 CSS 生成的伪内容 - 一旦 DOM 动态增删
<li>,手动维护的计数器极易错位,而原生value和start是浏览器自动重算的 -
counter()需搭配::before,会额外增加布局层,可能干扰list-style-position或缩进对齐 - 对嵌套
<ol></ol>,CSS 计数器需多级命名,复杂度陡增;而原生属性天然支持嵌套递进
编号类型切换:优先用 CSS list-style-type
HTML5 已废弃 type 属性(如 <ol type="A"></ol>),应改用 CSS:
-
list-style-type: upper-alpha→ A、B、C -
list-style-type: lower-roman→ i、ii、iii - 这些样式不影响
value或start的数值逻辑,只是视觉映射 - 注意:
reversed属性仍有效,但仅对decimal类型行为明确;其他类型(如字母)倒序兼容性差,慎用
真正容易被忽略的是:哪怕你用 list-style-type: upper-roman,value="4" 依然生效,浏览器会把它转成 IV —— 这个映射由浏览器完成,无需手动计算。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











