简单讲讲CSS计数器,一看就会!

今天和大家简单说说 counter-reset,它的作用就是重置计数器或者说是初始化计数器。我们常用来制作自动编号、列表编号等。

一、语法形式

selector {
  counter-reset: <counter-name> <integer>?;
}
  • <counter-name>:计数器名称,自己起的名字。
  • <integer>:计数器起始值,它是可选的,默认是0。

你可以同时重置多个计数器,只需要用空格分开即可。

二、用法示例

1. 基础用法

假设你有这样一个HTML结构

<body>
  <h1>大鹅真帅</h1>
  <h1>大鹅真棒</h1>
  <h1>大鹅无敌</h1>
</body>

我现在想在每个 h1 内容前加上诸如 第N节 这样的前缀,那我们只需要这样做

body {
  counter-reset: eee;  
}
h1 {
  counter-increment: eee; 
}
h1::before {
  content: "第 " counter(eee) " 节:"; 
}

呈现结果如下

是不是一下子就会了!

2. 自定义起始值

根据语法,我们知道第二个参数就是起始值,我们只需要增加第二参数即可。

body {
  counter-reset: eee 1;  
}

我们将起始值改为 1 ,那么在遇到 h1 之后,就会在 1 的基础上进行递增了

3. 自定义增幅

在上面的教程中,我们已经学会了如何设置初始值,但现在有了新的需求:我想在起始值上,每次增加2而不是1,那该如何做呢?

其实,我们上面的例子中,已经使用到了 counter-increment ,它同样具有第二参数 —— 就是增幅,我们只需要修改即可。

h1 {
  counter-increment: eee 2; 
}

4. 倒数计数

在上面的例子中,我们都是在正向计数,其实我们还可以实现倒数,只需要将 counter-increment 第二参数改为负数即可。

h1 {
  counter-increment: eee -1; 
}

5. 多计数器

现在我不想使用整数了,想尝试变成 1.1、2.3、3.5 这种,头大!

那么此时,多计数器就派上用场了!

body {
  counter-reset: eee1 eee2 -1;  
}
h1 {
  counter-increment: eee1 eee2 2; 
}
h1::before {
  content: "第 " counter(eee1)"."counter(eee2) " 节:"; 
}

你可以根据需求,实现任意组合!

6. 终极嵌套

现在给你一个这样的HTML结构

  <h1>
    大鹅真帅
    <h2>玉树临风</h2>
    <h2>惨绿少年</h2>
  </h1>
  <h1>
    大鹅真棒
    <h2>学富五车</h2>
    <h2>倚马千言</h2>
    <h2>你们来编</h2>
  </h1>

我们想让每个 h1 自增,每个 h1 里面的h2 也自增,但格式为 1.1、1.2 1.3这种!发动你的脑筋,想想该如何实现呢?

什么,不想思考!像你这样的人,到底要如何改变~

那直接开卷!

    body {
      counter-reset: e-1;
    }

    h1 {
      counter-increment: e-1;
      counter-reset: e-2;
    }

    h1::before {
      content: "第 " counter(e-1) " 章:";
    }

    h2 {
      counter-increment: e-2;
    }

    h2::before {
      content: "第 " counter(e-1) "." counter(e-2) " 节:";
    }

随便再加点其他样式,就可以啦~

三、趣事一则 - linuxdo wiki

当初wiki站刚搭建起来的时候,里面有一个需求:就是让编号符合我们社区的等级,让其对应起来。但内置组件的编号是从1开始的!

正当我准备去重构一下这个内置的Steps组件时,发现了一个大宝贝!

是不是很眼熟,一下子就找到了症结所在 —— 内置了一个名叫step的计数器,但是没有给初始值!根据我们上面学的,不给默认值就是0!那么问题就变得比干饭还简单了,直接给样式重置一下初始值不就完了么!

image

多么的amazing啊!本打算重构的,结果一行CSS就搞定了!那是真的漂亮~


那么,本期分享就到这里了,有用的话给鹅点点赞、发发评论吧!


你可以在这里找到大鹅所有CSS知识分享哦
:red_triangle_pointed_down::red_triangle_pointed_down::red_triangle_pointed_down::red_triangle_pointed_down::red_triangle_pointed_down:
🔥【冷门知识】鹅のCSS大合集!长期追更~ 收藏 ≈ 学会

55 Likes

别看现在发的猛,五一我可是要偷懒的!

5 Likes

热乎的大鹅

1 Like

大鹅老师太强了

1 Like

大鹅老师太强啦

1 Like

大鹅真帅
大鹅真棒
大鹅无敌

3 Likes

太强了,鹅老师

1 Like

这次总算是眼看就会了~

1 Like

大鹅真帅
大鹅真棒
大鹅无敌

1 Like

老师,我学废了

1 Like

大鹅老师太强了,学废了 :tieba_087:

1 Like

大王加油

2 Likes

咕噜咕噜大王!

1 Like

Tell me!你又是谁的小号 :tieba_087:

3 Likes

隔壁老奶奶给了五星好评 :tieba_087:

1 Like

再多编点,爱听

应该是你的

2 Likes

大鹅你好棒 :smiling_face_with_three_hearts:

it’s Jay!

2 Likes

这是谁的布酱!

1 Like