value属性仅作用于ol中li的当前项,强制设为指定整数,后续项无条件+1递增;它不修复空档、不回溯、不兼容嵌套或非整数,仅适用于法律跳号或跨ol续接等极少数场景。

有序列表中 li 的 value 属性到底起什么作用
value 是 li 在 ol 中的原生属性,但它只影响「当前项的编号值」,不改变后续项的自动递增值逻辑。比如你在第 3 个 li 上写 value="10",它会显示 10,但下一个 li 默认仍按 11 计数(不是从 1 重新开始)。
value 属性被忽略的常见原因
浏览器会无视 value 的几种典型场景:
-
ol设置了start属性,且该值覆盖了li的value(start优先级更高) -
li不是直接子元素,比如套了div或span:<ol><div><li value="5">...</li></div></ol>—— 这时value完全失效 - CSS 重置了计数器,例如用了
counter-reset或counter-increment却没正确关联到li - 在某些旧版 IE 或 WebKit 内核中,对嵌套
ol里内层li的value支持不稳定
真正可控的编号控制方式:CSS 计数器
想彻底绕过 HTML value 的限制(比如跳号、倒序、非数字编号),必须用 CSS counter。HTML 层保持语义干净,样式层接管编号逻辑:
ol {
counter-reset: item;
}
li {
list-style: none;
}
li::before {
counter-increment: item 2; /* 每次+2 */
content: counter(item) ". ";
}
这样就能实现任意步长、任意起始值,甚至混合字母/罗马数字:counter(item, lower-alpha)。注意:counter-reset 必须设在 ol 上,counter-increment 必须在 li 或其伪元素上,顺序错就不起效。
什么时候该坚持用 value,什么时候该切 CSS
value 适合简单修正单个编号(比如文档修订时某条目重编号),而 CSS 计数器适合结构化控制(如多级目录、法规条款、带跳号的步骤说明)。但要注意:
- 屏幕阅读器对 CSS 生成的编号支持不一致,纯靠
::before的编号可能不被读出 - 如果需要打印或 PDF 导出,部分工具对 CSS 计数器渲染不可靠,
value更稳妥 -
value值必须是整数,不能是字符串;CSScounter()可以用upper-roman等格式,但无法插入自定义文字前缀(如 “Step 1”)——得靠content: "Step " counter(item)
真要“强行更改”,别纠结 value 能不能生效,先看需求是否跨项、是否需语义保真、是否要兼容辅助技术——这些才是决定用 HTML 属性还是 CSS 的关键分水岭。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











