CSS 计数器简介

CSS 计数器简介

 

蓝线 关注

2018.04.07 12:54 字数 1113 阅读 10评论 0喜欢 0

CSS 计数器(counter)是由 CSS 维护的变量,其主要用途是,可以通过指定的规则来计算节点元素的使用次数。

计数器的使用很简单,分为以下三步:

初始化计数器

指定增量规则

应用计数器

这三步分别对应这计数器的三个属性和方法:

counter-reset

counter-increment

counter()/counters()

下面使用一个例子,来熟悉这些规则。

首先,我们拥有一个如下的列表。

  • 第一项
  • 第二项
  • 第三项

接下来我们使用计数器来为这个列表前面加上序号,使它呈现为下面这个样子。

counter example

很简单,如前面所述,三步走:

第一步,初始化计数器。我们使用 counter-reset 操作,这个属性可以接受两个值为一组的多组属性值,第一个值,我们为计数器起个名字,第二个值,我们指定该计数器的初始值。

counter-reset:custom-nameinteger;

第一个计数器的名称必须由字母、数字、下划线、中划线组成,且第一个字符必须为字母。第二个为整数,可以为负值,默认值为0.一般情况下我们把它定义在它的父元素上。

此属性可以指定多组,代表多个计数器,例如:

counter-reset:counter1counter21counter3-2;

上面的规则定义了三个计数器,第一个名称为 counter1 初始值为 0,第二个 counter2 初始值为1,第三个counter3 初始值为 -2。

所以回到上面的例子,我们的列表要从1开始,所以,我们可以如下定义:

ul{counter-reset: items0;/* 0 可以省略 */}

初始化之后,第二步,指定计数器增量规则。我们使用 counter-increment 来实现这个目的,这个属性的值和前面的 counter-reset 十分类似,同样是由两个值组成的多组值,第一个值同样是由 counter-reset 初始化好的计数器名称,第二个值为该计数器的增量,默认值为 1.

counter-increment:counter-nameinteger;

举例,针对上面的三个计数器,我们分别为它们指定不同的增量规则:

counter-increment:counter1counter2-1counter32

我们为 counter1 没有指定增量,所以它会按照默认值 1 递增,counter2 按 1 递减,counter3 按 2 递增。

再次回到我们的例子,我们为已经初始化好的 items 计数器指定以 1 递增的增量规则:

li{counter-increment: items1;/* 1 同样可以省略 */}

很简单吧,接下来就是第三步,应用我们指定好的计数器。一般来说,计数器常用于自动生成列表项的递增规则,所以经常在伪类元素的 content 属性中使用它,同样,我们需要一个 counter() 函数的帮助来将相应计数器注入 content 属性中,我们把计数器的名称传入到此函数可以完成应用。并且可以定制更个性化的计数规则。直接上例子:

li:before{content:counter(items)'. ';}

这样,我们就为三个列表项前面添加了‘1. 2. 3.’的计数规则。另外,counter() 方法可以指定第二个参数,来约束计数器的显示规则,例如指定为 lower-roman,则它会按照小写罗马数字的形式递增:ⅰⅱⅲⅳ···,至于这个值可以取什么值,其实就是 list-style-type` 可以取的值它都可以。

需要注意的是,除了初始化操作,其它两项操作必须要指定在相应的列表项上才能生效。

计数器嵌套

计数器特别强大的一点是,在一个嵌套的列表项,它会为内层的子元素自动添加计数器,我们可以在使用计数器的时候,应用 counters() 函数的第二个参数来指定子项的连接符。例如:

content:counters(counter-name, '-');

在以上规则中,列表的子项会呈现为‘1-1, 1-2, 1-3’这样的形式。上例子:

ul {  counter-reset: content;  list-style-type: none;}ul li:before {  counter-increment: content;  content: counters(content, "-") ". ";}

它呈现出来的效果如下图:

counter 嵌套

以上就是对 CSS 计数器的简单介绍。你可以看张鑫旭大神的这篇查看更详细生动的介绍。

小礼物走一走,来简书

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容