ol标签必须显式闭合且仅含li子元素,禁止混入其他标签;type和start属性已废弃,应改用CSS counters实现编号控制。

ol标签必须显式闭合,不能省略
HTML5解析器虽会自动补全未闭合的 ,但实际开发中漏写闭合标签极易引发DOM结构错乱——尤其嵌套时,浏览器可能把后续所有内容都当作上层 的文本子节点处理,导致JS获取 children 或样式应用完全失效。
常见错误现象:(缺
)→ 子 被识别为“第一步”的内容,而非嵌套列表。
- 所有
必须配对出现:,不可依赖自动修复- ...
- 嵌套时,内层
闭合后,外层仍需独立闭合 - 验证工具(如W3C Validator)会直接报错
End tag for “ol” seen, but there were open elements
ol内部只能直接包含li,不能混入其他标签
使用场景:想在某个步骤前加说明文字?正确做法是把说明放进对应 请按顺序操作: 虽然部分浏览器仍支持 性能与可维护性影响:硬编码编号类型会让多语言切换、暗色模式适配、动态重排序等需求变得极其脆弱。 嵌套的 容易踩的坑:以为写个 真正麻烦的不是语法本身,而是当 是严格的内容模型:它的直接子元素只能是 。插入 、 甚至注释都会破坏语义,部分浏览器降级渲染时可能丢弃非法子节点,或导致无障碍阅读器跳过整段列表。 内,而不是放在 和 之间。
+ 包裹整个 ,而非塞进 内部type和start属性在HTML5中已废弃,别再用了
,但HTML5规范明确将其标记为废弃(obsolete)。继续使用会导致验证失败,且无法保证未来兼容性;更重要的是,它绕过了CSS控制权,让样式与结构耦合,违背现代前端分离原则。
ol { list-style-type: lower-alpha; counter-reset: section 2; }
counter-increment + ::before 伪元素更可控type= 和 start= 并替换,比后期调试语义断裂更省力嵌套ol时,编号逻辑不自动继承,需手动控制
默认仍是阿拉伯数字1开始,不会延续外层编号(比如外层是“3. 操作步骤”,内层不会自动变成“3.1”)。这不是bug,而是设计使然——每层 是独立计数上下文。 就能生成层级编号,结果全是“1.”“1.”“1.”。
ol { counter-reset: item; } li { counter-increment: item; } li::before { content: counters(item, ".") ". "; }
list-style: none + 自定义图标或空格对齐 出现在表单验证提示、文档导出PDF、或被屏幕阅读器逐项播报时,一个没闭合的标签或非法子元素,会让整个信息流崩掉——而这种问题往往在线上环境才暴露。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











