ol标签仅提供语义化有序列表,考试逻辑依赖结构设计、type/start属性控制编号样式与起始值、嵌套+CSS计数器实现多级题号(如2.3)、reversed属性支持倒序显示,且li须保持语义独立、避免混装题干与选项。

ol 标签本身不带考试逻辑,它只是语义化地表达“有顺序的条目”。真正在考试场景中起作用的是结构设计、属性控制和与 JS 的配合方式。
用 type 和 start 控制题号样式与起始值
考试题干常需按 A/B/C 或 ①/②/③ 编号,不能只依赖默认数字。直接在 ol 上设 type 最快,但要注意浏览器兼容性边界:
-
type="A"和type="a"在所有现代浏览器中稳定支持,适合单选题选项(如 A. 正确 B. 错误) -
type="I"(大写罗马数字)在 Safari 15.4+ 才完全支持小写i,旧版可能回退为数字,慎用于正式考卷 -
start="2"适合接续前一题组,比如阅读理解第二篇从第 6 题开始,但注意:若中间插入 JS 动态增删li,start不会自动重算,得手动维护
嵌套 ol 实现多级题号(如 1.1、1.2)
主观题或子问题常用带点分隔的编号,HTML 原生不支持 “1.1” 这类复合编号,必须靠嵌套 + CSS 计数器实现:
- 外层
ol用type="1",内层ol用type="a",视觉上接近 1 → a/b/c,但仍是独立序列 - 真正要生成 “2.3” 这种编号,必须用 CSS 的
counter-reset和counter-increment,且需给每层ol设不同 counter 名(如section和subsection) - 避免用
ol > li > ol套三层以上——屏幕阅读器对深度嵌套列表的支持参差不齐,部分 NVDA 版本会跳过二级以下编号
用 reversed 属性做倒计时或倒序评分项
reversed 不是装饰性功能,它在特定考试交互中有实际用途:
立即学习“前端免费学习笔记(深入)”;
- 限时答题页顶部显示剩余时间(30 → 29 → 28…),可绑定到
ol并动态更新start值,比纯 JS 渲染 DOM 更轻量 - 多选题“扣分制”说明(如“错选一项扣 2 分”,按错误数倒排扣分项),用
reversed start="5"能自然呈现 5→4→3→2→1 的递减感 - 注意:
reversed仅影响编号显示,不改变 DOM 顺序或 JS 遍历顺序,document.querySelectorAll('ol li')仍按 HTML 顺序返回
别把 ol 当容器来放题干+选项+答案
常见错误是把整道题(题干、四个选项、正确答案提示)全塞进一个 li 里,这会破坏语义和可访问性:
-
li应只包裹“该题的一个逻辑单元”,比如单选题的每个选项本身是独立li,题干应放在ol外或用figure/legend包裹 - 如果题干含公式、图片或代码块,直接放
li内会导致缩进错乱,建议用div包一层并设display: contents(IE 不支持)或改用dl+dt/dd - 答案解析不能藏在
li的title或注释里——屏幕阅读器默认不读title,且爬虫无法索引,必须显式输出为details/summary或独立区块
最易被忽略的一点:考试系统里 ol 的编号是渲染层产物,JS 获取当前题号不能靠 li.innerText 解析 “3. ” 这类前缀,而应依赖 li.index 或 data 属性绑定真实 ID;否则换字体、加空格、国际化翻译都会让字符串匹配失效。



















