如何正确嵌套 HTML 有序列表以实现连续递增的十进制编号

11次阅读

如何正确嵌套 HTML 有序列表以实现连续递增的十进制编号

html 中嵌套 `

    ` 列表时,若将 `

      ` 直接置于 `
    ` 的 `

  • ` 外部(如兄弟元素),浏览器会将其视为多个独立列表,导致编号重置为 1;正确做法是将子 `
      ` 严格嵌套在父 `

    1. ` 内部,才能继承并延续序号。

      html 规范中,有序列表

        的编号连续性完全依赖于其 dom 结构层级

      :只有当多个

    2. 元素属于同一个
        父容器时,编号才会自动递增(1 → 2 → 3…)。而一旦

          被错误地放在
        内但脱离

      • 上下文(例如紧随
      • 后作为同级标签),它就成为一个全新的、孤立的列表——无论 css 类名是否相同,编号都会从 1 重新开始。

        你原始代码的问题正在于此:

        • General Aviation (piston-driven engines)
          1. Single-Engine aircraft
          1. Dual-Engine Aircraft

        上述写法违反了 HTML 列表嵌套语义——

          只能包含

        • (以及
        • CSS 类复用更安全:无需为每个
            单独定义 .f 类,可统一用 ol { list-style-type: decimal; },再通过嵌套选择器微调(如 ol ol { list-style-type: upper-roman; });
        • 验证结构:使用 W3C Markup Validator 检查 HTML 是否符合标准,及时发现非法嵌套;
        • 无障碍友好:正确嵌套确保屏幕阅读器能准确播报层级关系(如 “列表项 1,子列表,罗马数字一…”)。

        ? 总结:HTML 列表编号不是由 CSS 驱动,而是由 DOM 层级决定。要获得连续十进制编号,请始终确保所有

      • 属于同一个
          ,并将子列表(

          )作为父

        • 的直接子元素嵌入——结构即逻辑,语义即功能。

text=ZqhQzanResources