所以我试着在css中使用嵌套计数器,但我不太熟悉它的工作原理,这就是我到目前为止所知道的,

This is what I have so far

但我希望发生的是,每次有一个无序列表时,当我开始一个有序列表时,它会重置为1.2.3.

Something Like This

https://codepen.io/jojonmarijon/pen/OJZZPBK?editors=1100

HTML

<ul>
  <li>A</li>
  <li>B</li>
  <li>C</li>
  <ol>
    <li>AA</li>
    <li>BB</li>
    <li>CC</li>
    <ol>
      <li>AAA</li>
      <li>BBB</li>
      <li>CCC</li>
      <ul>
        <li>AAAA</li>
        <li>BBBB</li>
        <ol>
          <li>AAAAA</li>
          <li>BBBBB</li>
          <li>CCCCC</li>
        </ol>
        <li>CCCC</li>
      </ul>
      <li>DDD</li>
    </ol>
  </ol>
</ul>

CSS

    ol {
        counter-reset: section;
        list-style-type: none;
    }

    ul {
        counter-reset: section;
    }

    ol > li {
        counter-increment: section;
    }

    ol > li::marker {
        content: counters(section, ".") ". ";
        left: -4px;
    }

    ul > li:before {
        counter-increment: section;
        content: '';
    }

推荐答案

我认为目前仅使用css是不可能实现通用解决方案的:如果层次 struct 中已经有一个具有<name>的计数器,则counter-reset: <name>将创建一个嵌套计数器.并且没有办法访问父计数器,或对父计数器进行"取消嵌套".你需要一个不同名字的计数器才能达到你的结果.

因此,我认为您需要在两个次优解决方案中进行 Select :

  1. 在JS中实施
  2. 最多只能支持n级深度,对于n级的较低级别.例如,类似这样的事情:
ol {
  counter-reset: section;
  list-style-type: none;
}

ol > li {
  counter-increment: section;
}

ol > li::marker {
  content: counters(section, ".") ". ";
  left: -4px;
}

/* Level 1 */

ul ol {
  counter-reset: nested;
}

ul ol > li {
  counter-increment: nested;
}

ul ol > li::marker {
  content: counters(nested, ".") ". ";
}

/* level 2 */

ul ul ol {
  counter-reset: nested2;
}

ul ul ol > li {
  counter-increment: nested2;
}

ul ul ol > li::marker {
  content: counters(nested2, ".") ". ";
}

/* etc. */

另请参阅:https://codepen.io/Tiddo/pen/vYjjRRx?editors=1100

我认为,在实践中,您可能最多只需要支持3-5个级别,因此您可能能够摆脱硬编码的解决方案.

Css相关问答推荐

将照片向下对齐至div并保持响应性

如何改变图标的 colored颜色 时悬停在

Vue3日期 Select 器:禁用向左和向右箭头

在NextJS/Reaction应用程序中显示更新问题

响应的Megamenu位置css

在具有特定类的 td 之后,如何编写适用于该行上所有 td 元素的表行的 CSS Select 器?

.SVG 文件对象在锚标签下可点击

在 SVG 元素上方添加标签而不移动 SVG 元素

在 css 中使用 first-of-type 效果太好了吗?

对 CSS 容器查询使用多个条件

:required 或 [required] CSS Select 器

当计算的宽度不准确时,如何在 cypress 中测试元素的宽度?

Rails 7引擎如何使未编译的样式表可用于托管应用程序?

使用 CSS 在悬停时转换 SVG 路径的填充属性

Angular Material 中的样式垫 Select

如何在连字符 (-) 等特殊字符后分词

将未知大小的大图像居中在一个较小的 div 中,并隐藏溢出

CSS3 box-shadow:inset 可以只做一侧或两侧吗?喜欢边界顶部?

我应该在我的 Bootstrap 项目中使用 normalize.css 吗?

CSS 中的星号属性是什么意思?