start属性在中有效且html5已正式保留,并非废弃;它仅控制编号显示,不改变语义顺序或dom结构,值须为整数,支持负数和零(但start="0"多数浏览器修正为1),小数或字符串将退化为1,value和css counter-reset可覆盖其行为。

start 属性在 <ol></ol> 中是否有效
有效,但仅适用于 HTML4 和 XHTML 早期规范;HTML5 中 start 已被正式保留并支持,**不是废弃属性**。不过它的行为有隐含限制:它只影响列表项的编号显示,不改变 <li> 的语义顺序或 DOM 结构。
start 的实际用法和常见错误
直接写 start="5" 即可让第一个 <li> 显示为 “5.”,后续自动递增。但容易踩坑的地方不少:
- 值必须是整数(如
start="0"会显示 “0.”,但多数浏览器默认从 1 开始计数,start="0"实际可能显示为 “0.” 或 “1.”,行为不一致) - 不能用字符串或小数(
start="5.5"或start="five"会被忽略,回退到默认起始值 1) - 如果列表中包含
<li value="X">,它会覆盖start的递增逻辑——value优先级更高 - CSS 的
counter-reset也能实现类似效果,且更可控,但start更轻量、无需样式干预
示例:
<ol start="3"> <li>第三项</li> <li>第四项</li> </ol>
渲染结果:3. 第三项
4. 第四项
兼容性与替代方案:什么时候该用 CSS
start 在所有现代浏览器中都支持(Chrome 1+、Firefox 1+、Safari 3+、Edge),但如果你需要:
- 从负数开始(如
start="-2",部分旧版 Safari 可能不渲染负号) - 非十进制编号(如罗马数字、字母,且想自定义起始字母)
- 跨多个独立
<ol></ol>元素保持连续编号(比如分页列表)
那就得用 CSS counter-reset + counter-increment。例如让字母列表从 “c” 开始:
ol.alpha {
list-style-type: lower-alpha;
counter-reset: item 2; /* a=0, b=1, c=2 */
}
ol.alpha li {
counter-increment: item;
}
注意 start 不影响语义和可访问性
屏幕阅读器通常仍按 DOM 顺序播报“第一项”“第二项”,不会读作“第三项”“第四项”,除非辅助技术主动解析 start(目前主流读屏软件对此支持有限)。所以如果编号逻辑对理解内容至关重要(比如法律条文、步骤说明),建议在文本中显式写出数字,或用 ARIA 补充说明,别只依赖 start。
真正容易被忽略的是:这个属性只管视觉编号,不管语义、不触发 JS 事件、也不影响 ol.children.length 或 li.index 这类计算——它纯粹是个呈现层开关。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











