目录
简单方法
添加和设置自定义计数器
反转自定义计数器
首页 web前端 css教程 如何逆转CSS自定义计数器

如何逆转CSS自定义计数器

Apr 05, 2025 am 09:37 AM

How to Reverse CSS Custom Counters

我需要一个博客文章编号列表,从最后一个/最大的数字开始,然后递减。例如:

<code>5. 文章标题
4. 文章标题
3. 文章标题
2. 文章标题
1. 文章标题</code>
登录后复制

但这只是文本。我想用语义化的 <ol></ol> 元素来实现这一点。

简单方法

可以使用 HTML 的 reversed 属性在 <ol></ol> 元素上实现:

<ol reversed="">
  <li>这个</li>
  <li>列表</li>
  <li>将会</li>
  <li>按倒序</li>
  <li>编号</li>
</ol>
登录后复制

对大多数人来说,这就足够了。任务完成。

但是我需要自定义样式的计数器。

需要注意的是,可以使用 ::marker 伪元素来实现自定义列表编号样式,但这还不受 Chrome 支持(尽管我听说很快就会支持)。

因为我想要完全兼容所有浏览器的自定义编号样式,所以我使用了自定义计数器。

添加和设置自定义计数器

要使有序列表的计数器样式与列表的其余部分不同,需要禁用默认计数器,并创建和显示我们自己的计数器,方法是使用 CSS 计数器。Chris 之前分享了一些值得查看的技巧。

假设我们有以下 HTML:

<ol>
  <li>项目 1</li>
  <li>项目 2</li>
  <li>项目 3</li>
</ol>
登录后复制

……首先,我们需要通过将 CSS 属性 list-style-type 设置为 none 来禁用所有有序列表附带的默认计数器,如下所示:

ol.fancy-numbered {
  list-style-type: none;
}
登录后复制

这去除了所有默认编号。接下来,我们在 CSS 中创建一个计数器来跟踪列表中项目的数量。

ol.fancy-numbered {
  list-style-type: none;
  counter-reset: a;
}
登录后复制

这给了我们一个名为“a”的计数器,但可以随意命名。让我们使用列表项上的 ::before 伪元素来显示我们的计数器(li::before)。

ol.fancy-numbered li::before {
  content: counter(a)'.';
}
登录后复制

这会将伪元素的内容设置为我们计数器的值。现在,这会在您的列表项旁边打印 1。

我们需要告诉 CSS 计数器如何递增。

ol.fancy-numbered li::before {
  content: counter(a)'.';
  counter-increment: a;
}
登录后复制

“a”的起始值为零,这看起来很奇怪,但默认增量为 1,这意味着它成为实际的起始点。递增 1 恰好是默认值,但我们很快就会看到,我们可以更改它。

我们现在可以继续对计数器应用任何我们想要的自定义样式,因为计数器只是一个对样式开放的文本伪元素:

ol.fancy-numbered li::before {
  content: counter(a)'.';
  counter-increment: a;
  position: absolute;
  left: 0;
  color: blue;
  font-size: 4rem;
}
登录后复制

例如,在这里,我们使计数器颜色变为蓝色并增加了字体大小。这些是我们无法使用默认计数器完成的事情。

反转自定义计数器

如果我们像之前一样向 <ol></ol> 元素添加 reversed 属性,我们将观察到没有效果,因为我们禁用了默认编号。这正是此属性的作用。

<ol reversed="">
  <li>项目 1</li>
  <li>项目 2</li>
  <li>项目 3</li>
</ol>
登录后复制

上面的代码对我们的自定义编号没有影响。最好还是保留它,因为我们的目的是反转列表。这使语义保持准确。

要反转基于计数器的编号的视觉顺序,我们需要知道列表中项目的总数,并指示计数器从该数字开始,然后从那里递减。

ol.fancy-numbered {
  counter-reset: a 4;
  list-style-type: none;
}
登录后复制

在这里,我们将 counter-reset 设置为 4。换句话说,我们告诉浏览器从 4 而不是 1 开始计数。我们使用 4 而不是 3,同样是因为 counter() 规则应用于列表中的第一个项目,即 0。但是,在我们倒数的情况下,4 成为我们的 0。如果我们从 3 开始递减,最终会得到 0 而不是 1。

接下来,我们将我们的 counter-increment 规则更改为递减 1 而不是递增,方法是将其设为负整数

ol.fancy-numbered li::before {
  content: counter(a)'.';
  counter-increment: a -1;
  position: absolute;
  left: 0;
  color: blue;
  font-size: 4rem;
}
登录后复制

就是这样!现在,您可以随意使用它,例如步骤跟踪器:

或者时间轴:

或者商业计划?

以上是如何逆转CSS自定义计数器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles