start属性必须写在标签上且值为整数(如start="7"),配合type属性生效;非整数会退化为1,type="a"时start="3"显示"c."而非"3.",常见失效因样式隐藏序号或未正确配type。

start 属性是唯一原生、零 JS、零 CSS 的方式,直接控制 <ol></ol> 的起始编号。写对位置、传对值、配对 type,它就生效;否则大概率“没反应”——不是 bug,是配置错位。
怎么写 start 才真正起作用
必须把 start 作为属性写在 <ol></ol> 开始标签上,且值为整数(正、负、零都合法):
-
<ol start="7"></ol>→ 显示 “7.”、“8.”、“9.” -
<ol start="-2"></ol>→ 显示 “-2.”、“-1.”、“0.”(现代浏览器全支持) -
<ol start="5.8"></ol>或<ol start=""></ol>→ 被强制转成1,无报错但失效 - 不要写
start="a"或start="iii"—— 它只处理数字逻辑,字母/罗马数字起始靠type配合
start 和 type 必须配合使用
start 的含义取决于 type 值:它表示“序列中的第几个”,不是绝对数字显示:
-
<ol type="1" start="5"></ol>→ “5.”、“6.”、“7.”(阿拉伯数字,从 5 开始) -
<ol type="a" start="3"></ol>→ “c.”、“d.”、“e.”(小写字母,第 3 个是 c) -
<ol type="i" start="4"></ol>→ “iv.”、“v.”、“vi.”(小写罗马数字,第 4 个是 iv) - 漏掉
type时默认为"1",所以start="5"在没设type时就是 “5.” 起头
为什么写了 start 却还是从 1 开始
常见失效原因和对应排查点:
-
list-style: none或display: flex等样式隐藏了序号本身 ——start仍在计算,只是你看不见 -
<ol type="a" start="5"></ol>却期望显示 “5.” → 错误预期,此时应显示 “e.” -
<ol></ol>外层被aria-hidden="true"、visibility: hidden或opacity: 0包裹 → 序号不可见也不可访问 - 动态渲染时用 JS 拼接字符串传入
start,但值未转为整数(如start="${num}"中num是字符串"7"还行,"7.0"就退化为1)
IE 兼容性和语义边界要注意
IE11 及更早版本不支持 start,会始终从 1 开始编号;另外,start 只影响视觉编号,不影响 DOM 顺序或屏幕阅读器播报逻辑 —— 屏幕阅读器仍按实际列表项位置读作“第 1 项”“第 2 项”。若需语义上跳过前几项(比如法律条文从“第十二条”开始),不能只靠 start,得手动加 aria-setsize 和 aria-posinset。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











