start属性是原生支持的起始编号控制方式,值必须为整数(含负数、零),如start="7"显示“7.”“8.”,不支持小数或字符串;它仅影响视觉编号,不影响DOM顺序、语义或可访问性。

直接写 start 属性是最简方案
不用 JS、不靠 CSS,<ol start="7"></ol> 就能让第一项显示 “7.”,后续自动变成 “8.”、“9.”。它不是跳过前 6 项,而是把编号起点设为 7 —— DOM 顺序、语义、可访问性全都不变,只改视觉序号。
常见错误是把 start 当成“第几个字母”来填:start="c" 或 start="iii" 会静默退化为 1;必须填整数,比如 type="a" 下想从 “c” 开始,得写 start="3"。
-
start="-2"合法,渲染为 “-2.”、“-1.”、“0.” -
start="5.8"被截断为 5,start="abc"直接退回到 1 - 服务端模板里注意变量类型:传入字符串
"10"没问题,但null或空字符串会导致回退到默认 1
start 和 type 必须配合才不出错
type 只管样式映射,start 才决定“从第几个开始数”。浏览器内部始终用阿拉伯数字计数,再按 type 查表转换。所以:
-
<ol type="a" start="3"><li>c</li></ol>→ 显示 “c.”(不是 “3.”) -
<ol type="I" start="4"><li>IV</li></ol>→ 显示 “IV.”(不是 “4.”) -
<ol type="1" start="0"></ol>→ 显示 “0.”、“1.”、“2.”,合法且直观 - 别混用
type="A"和start="0"期望显示 “0”,它仍会映射为 “A”(因为字母序列无第 0 位)
为什么写了 start 却还是从 1 开始?
大概率不是属性没生效,而是被其他东西盖住了序号本身:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- CSS 中写了
list-style: none或display: flex,序号被隐藏了,start仍在计算 -
<ol></ol>外层加了aria-hidden="true"、visibility: hidden或opacity: 0 - 动态插入新
<li>后没重设start,浏览器不会自动对齐“上一个列表末尾+1” - 误用了
value:一个<li value="1">就能覆盖整个start的效果,让编号重归 “1.”
嵌套 <ol></ol> 时 start 不继承
外层 <ol start="10"></ol> 不会影响内层编号,内层默认仍从 1 开始。如果需要 “3.1”、“3.2” 这类带章节前缀的编号,start 无能为力,必须切到 CSS counter-reset + counter-increment。
不过内层可以独立设自己的 start 和 type,比如外层 type="1",内层 type="a" + start="2" → 显示 “b.”、“c.”。
真正容易被忽略的是:当你有多个分离的 <ol></ol> 需要接续编号(比如第一段到 5,第二段从 6 开始),start 无法感知前一个列表长度,必须手动算好填值——这个动作在 SSR 或 CMS 场景下极易出错。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










