start属性直接写在标签上生效,值必须为整数,非整数会截断或退化为1;配合type使用控制起始序号,与value共存时value覆盖单个li并中断自动递增。

start 属性直接写在 <ol></ol> 标签上就能生效,不需要 JS、不用 CSS counter,但值必须是整数——写错类型或放错位置,它就“看起来没反应”。
start 值必须是整数,小数和字符串会静默失效
浏览器只认整数,其他类型会被截断或退化为 1:
-
start="5"→ 正常显示 “5.”、“6.”、“7.” -
start="5.8"→ 截断为 5,效果同start="5" -
start="abc"或start=""→ 退化为默认 1,无报错但编号从 1 开始 -
start="-2"→ 合法,显示 “-2.”、“-1.”、“0.” -
start="c"或start="iii"→ 不合法,直接回退到 1
type 和 start 必须配合使用,否则语义错位
start 控制的是「该序列中的第几个」,不是阿拉伯数字本身:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
-
<ol type="a" start="3"></ol>→ 显示 “c.”、“d.”、“e.”(a=1, b=2, c=3) -
<ol type="I" start="4"></ol>→ 显示 “IV.”、“V.”、“VI.” -
<ol type="A" start="0"></ol>→ 行为不一致,部分浏览器映射为 A,但非标准,建议避免 - 别写
type="a" start="c"——start只接受数字,不解析字符
为什么写了 start 却还是从 1 开始?常见干扰项
不是属性写错了,而是渲染被其他因素覆盖:
-
list-style: none或display: flex等布局方式隐藏了序号本身,start仍在计算,只是你看不见 -
<ol></ol>外层被aria-hidden="true"或visibility: hidden包裹,序号不可见也不可访问 - 服务端渲染时
start值为空、null或未传入,HTML 输出成了start="",浏览器按默认 1 处理 - 动态插入新
<li>时,start不会重算;新增项仍按原逻辑递增,不会自动对齐“当前最大序号+1”
start 和 value 共存时的编号逻辑
start 是整个列表的基准,value 只覆盖单个 <li> 并中断后续自动递增:
-
<ol start="10"> <li>A</li> <li value="20">B</li> </ol>→ 显示 “10.”、“20.”,第三项若存在会是 “21.” -
<ol> <li value="1">A</li> <li value="3">C</li> <li>D</li> </ol>→ 显示 “1.”、“3.”、“4.”(不是 “3.”、“4.”) - 想让整个列表从某数开始且线性递增,只用
start;只有局部跳号(如法律条文“第十二条”后接“第十七条”)才动value
真正容易被忽略的是:它不校验实际 <li> 数量,哪怕只有一个 <li>,start="999" 也会显示 “999.”——语义和视觉完全一致,但结构上毫无冗余。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










