You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置有序递进列表的非编号标题?

嘿,我来帮你搞定这个有序列表加非编号标题的问题,顺便修复那个烦人的HTML错误~

首先,咱们得先搞清楚为什么原来的代码会报错:HTML规范里明确规定<ol>(有序列表)的直接子元素只能是<li>标签,你之前把<strong>A</strong>直接塞到<ol>里面,这肯定不符合规则,所以浏览器才会给你提示错误。

接下来给你两种靠谱的实现方式,既能满足非编号标题+递进有序列表的需求,又能避免HTML错误:

方式一:拆分列表+手动指定起始编号(简单直接)

如果你的列表不需要频繁新增内容,手动设置起始编号就够了。我们把每个标题和对应的子列表拆分开,标题放在<ol>外面,然后用<ol>的start属性来保持编号连续:

<strong>A</strong>
<ol>
  <li>子项1</li>
  <li>子项2</li>
</ol>

<strong>B</strong>
<ol start="3">
  <li>子项1</li>
  <li>子项2</li>
</ol>

<strong>C</strong>
<ol start="5">
  <li>子项1</li>
</ol>

用Markdown混合HTML写的话也很方便:

**A**
1. 子项1
2. 子项2

**B**
<ol start="3">
  <li>子项1</li>
  <li>子项2</li>
</ol>

这种方式的好处是简单,不需要额外写CSS,缺点是如果后面新增子列表,得手动修改start的值。

方式二:用CSS计数器实现自动连续编号(灵活省心)

如果你的列表经常要新增内容,手动改编号太麻烦,那CSS计数器就是最佳选择。它能自动帮你维护连续的编号,完全不用手动设置start:

首先写CSS样式:

/* 初始化计数器 */
.list-container {
  counter-reset: item-counter;
}

/* 隐藏默认的列表编号 */
.list-container ol {
  list-style: none;
  padding-left: 0;
}

/* 每次遇到<li>就递增计数器 */
.list-container ol li {
  counter-increment: item-counter;
  margin-left: 1.5em;
  position: relative;
}

/* 显示自定义的连续编号 */
.list-container ol li::before {
  content: counter(item-counter) ". ";
  position: absolute;
  margin-left: -1.5em;
}

然后是HTML结构:

<div class="list-container">
  <strong>A</strong>
  <ol>
    <li>子项1</li>
    <li>子项2</li>
  </ol>

  <strong>B</strong>
  <ol>
    <li>子项1</li>
    <li>子项2</li>
  </ol>

  <strong>C</strong>
  <ol>
    <li>子项1</li>
  </ol>
</div>

这样不管你新增多少个标题和子列表,编号都会自动连续更新,再也不用手动改啦!

最后再强调一遍核心规则:永远不要把<strong>、<div>这类非<li>元素直接放在<ol>或者<ul>里面,一定要遵守HTML的嵌套规范哦~

内容的提问来源于stack exchange,提问作者Juri Rudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:22:56