type属性仅支持"1""a""a""i""i"五种值,其中"i"和"i"分别表示小写和大写罗马数字,浏览器按标准规则自动转换(如4→iv、9→ix),不支持自定义映射或超大数(>3999)可靠渲染。

ol 标签设罗马数字序号,直接用 type="i" 或 type="I" 就行,别试其他值——浏览器只认这两个。
type 属性只接受 5 个固定字符串值
HTML 规范硬性限定 ol 的 type 属性只能是:"1"、"a"、"A"、"i"、"I"。其中只有 "i" 和 "I" 对应小写/大写罗马数字。写成 type="roman"、type="lower-roman" 或 type="ii" 都无效,会被静默忽略。
-
ol.type = "i"是合法 JS 写法;ol.type = "lower-roman"不报错但不生效 - 大小写敏感:
"i"和"I"有效,"ii"或"Ii"无效 - 浏览器自动转换:1→i、4→iv、9→ix、10→x……规则固定,不可自定义(比如跳过 IV 或映射到自定义符号)
超过 3999 时渲染可能回退为阿拉伯数字
标准罗马数字表示法上限是 3999(MMMCMXCIX),超出后行为不一致:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- Chrome / Firefox 通常继续尝试渲染(如 4000 → MMMM),但视觉上可能错乱或截断
- 旧版 Safari / IE 可能直接回退为
1.、2.等阿拉伯数字,且无任何警告或错误信息 -
start属性不受影响:<ol type="I" start="4000"></ol>仍从 4000 开始计数,但渲染结果不可靠
CSS 的 list-style-type 和 HTML type 是两套独立机制
用 style="list-style-type: upper-roman" 看起来和 type="I" 一样,但底层逻辑完全不同:
-
list-style-type只控制样式层,不影响 DOM 中ol.type的读取值(JS 里ol.type还是"1") - 混用风险高:
<ol type="i" style="list-style-type: upper-roman"></ol>在 Chrome 以type为准,在 Safari 可能以 CSS 为准,结果不可预测 - 若需 JS 动态切换类型,必须改
ol.type,不能只改 CSS
真正容易被忽略的是:语义编号(type)和视觉样式(list-style-type)在 DOM 和渲染管线中走的是不同路径。你在 SSR 渲染、服务端生成 HTML 时用 type="I",客户端 JS 却去读 getComputedStyle(ol).listStyleType,拿到的永远不是你预期的“当前罗马数字状态”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










