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

伪元素使用@counter-style无效,如何实现可独立移动的自定义计数?

问题:能否在伪元素上使用@counter-style?

尝试为<li>的::after伪元素设置自定义计数器样式,但无法生效;直接将规则应用于<li>选择器时可以正常工作,但这样会导致移动计数元素时整个<li>都跟着移动,不想通过新增HTML元素来实现需求。

代码示例

CSS

main .works ol li::after {
  list-style: icone;
  position: absolute;
}

@counter-style icone {
  system: additive;
  additive-symbols: V 5, IV 4, I 1;
}

HTML

<section class="works">
  <h2>Fonctionnement</h2>
  <ol>
    <li>Choisissez un restaurant</li>
    <li>Composez votre menu</li>
    <li>Dégustez au restaurant</li>
  </ol>
</section>
解答

list-style属性是专门为列表项(<li>这类元素)设计的,伪元素无法直接通过list-style应用自定义计数器样式。要在伪元素上实现自定义计数,得用CSS计数器的counter()函数配合content属性,具体步骤如下:

  • 给父级<ol>设置计数器重置,初始化计数起点
  • 给每个<li>设置计数器递增,让每一项的计数依次增加
  • 在::after伪元素中,通过content调用自定义计数器样式

修改后的CSS代码:

main .works ol {
  counter-reset: list-counter; /* 重置计数器 */
}

main .works ol li {
  counter-increment: list-counter; /* 每个li递增计数器 */
  position: relative; /* 让伪元素基于li定位 */
}

main .works ol li::after {
  content: counter(list-counter, icone); /* 调用自定义计数器样式 */
  position: absolute;
  /* 可添加left/right等定位属性自由调整计数元素位置,比如left: -25px; */
}

@counter-style icone {
  system: additive;
  additive-symbols: V 5, IV 4, I 1;
}

这样就能在伪元素上渲染出自定义样式的计数器,而且可以自由移动伪元素的位置,不会影响<li>本身的布局。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:35:21