css/counter(step)实现计数器效果

233 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第1 天,点击查看活动详情

大家好,这是我入坑以来的第二篇文章。每天混迹于各种论坛网站沸点而渐渐觉得乏味,为了充实自己也为了年前的flag,慢慢积累,冲~

年年岁岁花相似,岁岁年年人不同。朋友渐渐没了联络,bug却一直守候在我们身边,只有它最真心了。 当我在年前遗留的各种问题中渐渐失去耐心时突然眼前一亮,屎山里的一颗璀璨的明珠跳了出来。 喏,就是下面这位:

image.png

作为切图仔,Javascript可以不自信,但是样式上的问题从来是不露怯的。这突如其来的陌生感难免让我有些尴尬,仔细研究观察原来这是计数器。下图中的代表步骤的数字就是它生成的。

image.png

按照通常的思维,步骤不多直接<span>1 2 3</span>直截了当,但是步骤多了就很尴尬(不考虑js)。所以counter(step)虽不常见,但是很有必要。

下面我们一起来观察它是如何实现的。

<div class="step">
        <span>打开冰箱</span>
        <span>把大象塞进冰箱</span>
        <span>关上冰箱</span>
    </div>
<style>
        .step{display: flex;margin-top:10px;counter-reset: step;}
        .step span{margin:0 20px;padding:20px 0;flex:1;border:1px solid #ccc;text-align: center;}
        .step span::before{content:counter(step);counter-increment: step;}
    </style>

上面的html浅显易懂就不多赘述。通过样式我们可以发现父类的counter-reset: step;伪类的content:counter(step);counter-increment: step;这几个是我们今天研究的主要对象。

counter-reset

counter-reset属性创建或重置一个或多个计数器,默认值为0;通常是和counter-increment属性,content属性一起使用。利用这个属性,计数器可以设置或重置为任何值,可以是正值或负值。如果没有提供 number,则默认为 0。

counter-increment

counter-increment属性递增一个或多个计数器值,默认增量是 1。利用这个属性,计数器可以递增(或递减)某个值,这可以是正值或负值。如果没有提供 number 值,则默认为 1。

content

content 属性与 :before:after 伪元素配合使用,来插入内容。默认值normal 语法格式:

content: normal|none|counter|attr|string|open-quote|close-quote|no-open-quote|no-close-quote|url|initial|inherit;

以下是多段落的实现方法,和上图“把大象关进冰箱”一样的实现方法。 image.png

悄悄地说一声加油!