html5中ol的type属性仅支持1、a、a、i、i五种合法值,分别对应阿拉伯数字、小写/大写字母、小写/大写罗马数字;type仅控制编号外观,不改变语义或顺序,且不能使用css值如lower-roman。

type 属性在 <ol></ol> 中只控制编号外观,不改变语义或顺序;它不是 CSS 替代方案,也不能写成 type="lower-roman" 这类 CSS 值——浏览器会直接忽略,回退到默认数字。
哪些值是合法的 HTML type 属性值
HTML5 规范只接受以下 5 个字符串值(大小写敏感):
-
1:阿拉伯数字(默认,可省略) -
a:小写字母(a、b、c…) -
A:大写字母(A、B、C…) -
i:小写罗马数字(i、ii、iii…) -
I:大写罗马数字(I、II、III…)
常见错误包括:type="roman"、type="upper-alpha"、type="decimal"——这些是 CSS list-style-type 的取值,不是 HTML type 的合法值,写了也无效。
为什么 start 经常被漏掉
仅设 type="A" 会让列表从 A 开始编号;若想从 C(即第 3 项)开始,必须显式加 start="3":
<ol type="A" start="3"> <li>第一章</li> <li>第二章</li> </ol>
否则会显示为 A、B,而不是 C、D。这个规则对 type="i" 或 type="I" 同样适用:想从 v 开始就得 start="5"。
start 的值永远是阿拉伯数字,哪怕 type 是字母或罗马数字;它影响整个列表及嵌套子 <ol></ol> 的计数起点(除非子列表显式重置 start)。
CSS list-style-type 比 HTML type 更灵活
如果需要 lower-greek、cjk-ideographic(中文数字)、或自定义前缀(如 “Step 1.”),HTML type 完全无能为力,必须用 CSS:
ol.step {
list-style-type: lower-greek;
}
ol.chinese {
list-style-type: cjk-ideographic;
}
注意:CSS 的 list-style-type 优先级高于 HTML type 属性;一旦给 <ol></ol> 设置了该 CSS,HTML 的 type 就会被覆盖。所以二者不要混用,尤其在组件化或框架中容易意外冲突。
真正麻烦的是动态插入列表项后编号没更新——start 不会自动重算,得用 JS 手动改 ol.start 属性或重置 CSS 计数器。这点在 SPA 或编辑器场景里最容易被忽略。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











