start属性可直接设置起始编号,支持整数(含负数),value仅覆盖单个编号且不影响后续自动递增,css counter-reset虽可替代但语义弱且需额外无障碍处理。

有序列表起始数字用 start 属性控制
HTML 默认从 1 开始编号,想从 5、10 或其他数字开始?不用 JavaScript,直接用原生 start 属性就行。它只作用于 <ol></ol> 元素,对 <ul></ul> 无效。
常见错误是把 start 写成 value(那是单个 <li> 的覆盖编号),或者加在 <li> 上却期望影响整个列表——没用。
-
start接收整数,支持负数(比如start="-2"),但浏览器渲染时仍按顺序递增 - 如果列表里某个
<li>有value属性,它会覆盖后续项的自动计数,直到下一个带value的<li>出现 - 示例:
<ol start="3"> <li>第三项</li> <li>第四项</li> </ol>
渲染为 “3. 第三项” “4. 第四项”
start 和 value 混用时的编号逻辑
当既要整体偏移又要局部重置编号,start 是起点,value 是“强行指定当前项编号”,之后的项继续按 +1 递增。容易误以为 value 会重置计数器,其实它只是覆盖显示值,不影响后续自动计算。
- 写
<ol start="10"> <li value="5">A</li> <li>B</li> </ol>→ 显示 “5. A” “6. B”,不是 “5. A” “11. B” -
value必须是整数,字符串如value="abc"会被忽略,回退到自动计数 - 若第一个
<li>有value,start就失效了——因为起点已被显式覆盖
CSS 的 counter-reset 能替代 start 吗?
能,但没必要为简单起始数字改用 CSS。CSS 方案更灵活(比如跳着编号、多级嵌套控制),但也更易出错:需要手动管理计数器,且语义弱于原生 start。
- 纯 CSS 实现等效
start="7":ol { counter-reset: list-item 6; }(注意是 6,不是 7) - 若同时用了
start和counter-reset,后者优先级更高,start被忽略 - 无障碍支持上,
start被屏幕阅读器正确识别;CSS 计数器需额外aria-label补充,否则读不出编号
移动端和旧浏览器兼容性没问题
start 是 HTML4 就有的属性,所有现代浏览器(Chrome/Firefox/Safari/Edge)和 Android/iOS WebView 都支持,包括 IE9+。唯一要注意的是:某些 CMS 或富文本编辑器(如 WordPress 可视化编辑器)会过滤掉 start,保存后消失——得切到文本模式手动加。
- 验证是否生效:右键检查元素,看
<ol></ol>标签里是否保留了start="xx" - 如果编号仍是 1 开始,先确认没被 CSS 的
list-style: none或counter-reset覆盖 - 不要用
<ol type="1" start="xx"></ol>里的type——它只控制样式(1/A/a/I/i),不影响起始值
start 就一行的事,但容易卡在属性位置、类型混淆或编辑器过滤上。最稳的做法:手写 HTML,不依赖可视化编辑器,加完立刻 F12 看 DOM 是否存在该属性。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











