应优先使用控制有序列表起始编号,简洁语义且兼容性好;仅当需不连续编号时才在特定上用value;避免滥用value影响可访问性与逻辑清晰性。

ol 的 start 属性比 value 更可靠
直接用 start 属性控制有序列表起始编号,比在每个 <li> 上反复写 value 更简洁、更符合语义,也避免浏览器兼容性问题。Chrome、Firefox、Safari 都支持 start,且它作用于整个列表,不会被后续 li 的 value 意外打断计数逻辑。
常见错误是以为必须给每个 <li> 加 value 才能自定义序号——其实只要起始点明确,后续自动递增。
-
<ol start="5"> <li>第一条</li> <li>第二条</li> </ol>渲染为 “5. 第一条” “6. 第二条” -
start接受整数,负数和零也合法(如start="-2"会显示 -2, -1, 0…) - 若同时存在
start和某个<li value="10">,该li会覆盖后续自动计数,但start仍决定第一个li的初始值
什么时候必须用 value 属性
只有当列表项编号不连续、跳变或需要局部重置时,才需在特定 <li> 上显式设 value。比如考试题型分组、带子编号的条款、或从中间续接前一个列表。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
注意:value 只影响当前 <li> 的显示编号,不影响其后 li 的默认递增值(仍基于上一项的数值 +1)。
-
<ol> <li value="10">第十条</li> <li>第十一条</li> </ol>→ 显示 10, 11 -
<ol> <li value="1">A项</li> <li value="3">C项</li> <li>D项</li> </ol>→ 显示 1, 3, 4(不是 3, 4) - 不要滥用
value来“对齐样式”——那是 CSS 或 JS 的事,HTML 语义层应保持编号逻辑清晰
start 和 value 在可访问性上的差异
屏幕阅读器通常按 DOM 顺序播报编号,start 被普遍正确识别;而部分旧版读屏工具对嵌套或频繁使用 value 的列表可能误读序号,尤其当 value 值与视觉顺序明显脱节时(如 value="100" 后紧跟 value="2")。
- 优先用
start实现线性偏移,语义干净,无障碍友好 - 若必须跳号,请确保跳变有业务依据(如法律条文引用),并考虑加
aria-label辅助说明,例如:<li value="20" aria-label="第二十条">...</li> - 避免纯装饰性编号——如果序号无实际意义(比如仅为了圆点样式),改用
<ul></ul>+ CSSlist-style-type
JavaScript 动态修改 start 的注意事项
通过 JS 修改 ol.start 属性会实时更新整个列表渲染,但要注意 DOM 更新时机和事件响应边界。
- 设置
ol.start = 100后,所有li编号立即重算,无需手动遍历 - 若列表已渲染,再插入新
li,它会按新start和已有项数量自动推导编号(不是从 1 开始) - 不要在循环中反复读写
ol.start—— 它触发重排,性能敏感场景建议批量操作或用 CSS counter 替代 - 服务端渲染(SSR)页面中,若 JS 在 HTML 解析完成前执行,
ol元素可能尚未挂载,需确保执行时机(如DOMContentLoaded)
start 当成“偏移量”来用(比如想让列表从 5 开始就写 start="5" 是对的),但顺手给第一个 li 也加个 value="5"——这不仅多余,还可能在某些浏览器中导致双编号逻辑冲突。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










