type="i"是HTML中设置小写罗马数字的唯一合法写法,因type属性仅支持"1""a""A""i""I"五值,lower-roman是CSS值,HTML不识别,会静默回退为阿拉伯数字。

ol 标签设小写罗马数字,直接用 type="i" 就行,别写 type="lower-roman"——后者是 CSS 值,HTML 不认,写了等于没写,浏览器会静默退回到 1。
为什么 type="i" 是唯一正确写法
HTML 的 type 属性只接受 5 个硬编码值:"1"、"a"、"A"、"i"、"I"。其中 "i" 明确对应小写罗马数字(i、ii、iii、iv…),"I" 对应大写。大小写敏感,"ii"、"roman"、"lower-roman" 全部非法,会被忽略。
常见错误现象:写了 <ol type="lower-roman"></ol>,结果还是 1.、2.、3.——不是浏览器坏了,是它根本没解析这个值。
-
type="i"和type="I"是 HTML 原生支持的唯二罗马数字选项 - 浏览器按标准规则自动转换(4→iv,9→ix,10→x),不支持自定义映射
- 超过 3999 时,旧版 Safari 或 IE 可能回退为阿拉伯数字,无报错提示
想从 iv 开始?必须加 start="4"
只写 type="i",编号永远从 i(即 1)开始。要跳过前几项、从第 4 项起标为 iv.,必须显式声明 start="4":
立即学习“前端免费学习笔记(深入)”;
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<ol type="i" start="4"> <li>这是第四项</li> <li>这是第五项</li> </ol>
start 的值始终是阿拉伯数字,哪怕 type 是字母或罗马数字。嵌套 <ol></ol> 会继承父级的 start 计算逻辑,除非子 <ol></ol> 显式重置。
- 漏掉
start是最常被忽略的点,比如章节列表想从 “v” 开始,不加start="5"就会从 “i” 开始 -
start影响后续所有编号,包括嵌套列表中的子项 - JS 动态插入新
<li>时,start不会自动更新,需手动改ol.start
用 CSS 的 list-style-type: lower-roman 更推荐
虽然 type="i" 能用,但 HTML5 已将 type 属性标记为 obsolete(过时)。现代写法是用 CSS:
<ol class="roman-lower"> <li>第一项</li> </ol>
.roman-lower { list-style-type: lower-roman; }
好处是:lower-roman 在所有现代浏览器中行为比 type="i" 更一致,且支持更多值(如 armenian);还能配合 ::marker 精细控制样式。
- 不要混用:
<ol type="i" style="list-style-type: upper-roman"></ol>行为不可预测(Chrome 以 HTML 属性为准,Safari 可能以 CSS 为准) - CSS 方式不影响 DOM 的
ol.type属性读取——JS 里olElement.type拿到的仍是原始值(如"1"),不是视觉上看到的类型 - 若需 JS 动态判断当前序号类型,用
ol.type = "i"是唯一有效写法;传"lower-roman"会被静默忽略
真正容易被忽略的是:嵌套列表中,子 <ol></ol> 默认继承父级的 list-style-type,除非显式重置——多层文档结构里,这常导致字母变数字或罗马数字错乱。


















