type="a"和type="i"是html中仅支持的两种罗马字母序号类型,浏览器原生解析、无需css;但type属性已废弃,css的list-style-type优先级更高且推荐使用。

type="A" 和 type="I" 能直接切换大写字母和大写罗马数字
这两个值是 type 属性仅支持的五种合法值中的两个,浏览器原生识别、无需额外样式。写成 <ol type="A"></ol> 就显示 A. B. C.,<ol type="I"></ol> 就显示 I. II. III. ——不是靠 CSS 渲染,而是 HTML 解析器直接生成序号。
常见错误包括:
-
type="upper-alpha"或type="upper-roman":这些是 CSS 的list-style-type值,不是 HTMLtype属性的有效值,会被静默忽略,退化为默认阿拉伯数字 -
type="a"和type="A"大小写敏感,type="a"是 a. b. c.,type="A"是 A. B. C.,混用会出错 -
type="I"不等于type="ii"或type="roman",后者全无效
type 属性不支持 start 配合罗马数字重置起始值
比如 <ol type="I" start="3"></ol>,你以为会从 III 开始,实际仍从 I 开始,且 start 的数值 3 会被当作阿拉伯数字处理,最终渲染为 3. 4. 5.(不是 III. IV. V.)——因为 start 只影响计数起点,不参与罗马数字转换逻辑。
真正想从 III 开始,只能:
– 用 CSS counter-reset 手动控制(推荐)
– 或者老老实实加三个空 <li> 占位(不推荐,语义污染)
CSS list-style-type 优先级高于 type 属性
哪怕你写了 <ol type="I"></ol>,只要 CSS 里有 ol { list-style-type: lower-greek; },最终显示的就是 α β γ,不是 I II III。这不是 bug,是规范行为:CSS 的 list-style-type 永远覆盖 HTML 的 type。
所以如果你在调试时发现 type="I" 没生效,先检查有没有全局或局部 CSS 覆盖了它,尤其是框架自带的重置样式(如 Normalize.css 或 Tailwind 默认样式)。
type 属性已废弃,但仍有兼容性价值
HTML5 规范将 type 标记为 obsolete,官方推荐用 list-style-type 控制样式。但现实是:
– 所有主流浏览器(Chrome/Firefox/Safari/Edge)仍完整支持 type="A" 和 type="I"
– 它比 CSS 更轻量,不用写 class、不用引入样式表
– 对纯静态文档、邮件模板、CMS 输出等场景仍实用
真正要警惕的是超大数(>3999):旧版 Safari 或 IE 可能回退为阿拉伯数字,且无任何提示。如果业务涉及古籍编号或长序列,必须测试目标环境。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











