使用CSS计数器就像使用变量一样。

它有以下几个属性:

  counter-reset
  创建或重置计数器

  counter-increment
  增长计数器

  content
  生成内容

  counter()
  将计数器的值添加到元素中

使用CSS计数器,我们必须首先创建它。

dome1

效果:

不过得注意一下,必须用伪元素来生产内容,不然不起效果。

这样简单的说一下原理,就是它有多少个元素添加了counter-increment:list;这个它就可以加1。

不相信的话我们可以再来看个东西,可以说明它不是按照元素的,而是根据counter-increment,如果它的值是一样的就可以增加。

有了这个属性,如果需要这种效果就不要去写JS了。

如果你觉得你会了,那就错了,其实还有很多坑,来看一个复杂点的。

  这个好像没有什么问题对吧,但我为什么要给body加呢?其实有原因的,再来看这个counter-reset,它表示创建或重置计数器,那么就有问题了,什么情况下它表示创建,什么情况下它表示重置?

  以我的观察是,当第一次使用counter-reset就表示创建,第二次表示重置,但要注意是同一个元素才会重置。body一个页面只有一个,所有对于只需要增加而不需要重置的计数器就可以写去body里面,当然也可以写去其他元素里面,只要保证它是唯一的,当然这句话不是100%正确,不好描述,自己试试就懂了。

看最后一个例子。

这个你能理解,就差不多了,不能就自己多试几次,也没啥。

2016.09.22更新

这几天在项目中都有用到这个技术,确实挺好用的,另外再讲几个小技巧。

利用计数器来实现获取input checked选择的数量。

怎么样,还可以吧?

其实我们还可以自己手动更改counter-increment的数值大小,比如下面这个。

其代码是这个

CSS:

body{
  counter-reset:num;
}
input:nth-of-type(1):checked{
  counter-increment:num 5;
}
input:nth-of-type(2):checked{
  counter-increment:num 2;
}
input:nth-of-type(3):checked{
  counter-increment:num 7;
}
input:nth-of-type(4):checked{
  counter-increment:num 1;
}
div::after{
  content:'Count ' counter(num);
}

HTML:

5<input type="checkbox">
2<input type="checkbox">
7<input type="checkbox">
1<input type="checkbox">
<div></div>

通过这个可以很好的实现下面的这种效果。

注意除了后面的文字左边的间距是一样的。

我的实现方式是这样的。

HTML:

<dl class="list">
  <dt class="title">会员特权</dt>
  <dd>每个在线商品均可享受成本价特惠购买,每个商品可享受5~200元不等的优惠力度</dd>
  <dd>分享所有商品项目链接给朋友,朋友也可以享受优惠1~40元不等的优惠</dd>
  <dd>更多特权敬请期待</dd>
</dl>

CSS:

dl{
  margin:0 1.2rem;
}
dl>dt{
  border-bottom:1px solid #dedede;
}
dl:first-of-type{
  margin-top:20px;
}
.list{
  counter-reset:list;
}
.list>dd{
  line-height:2;
  counter-increment:list;
  font-family:sans-serif;
  padding-left:1.2rem;
  position:relative;
  color:#999;
}
.list>dd::before{
  content:counter(list) '. ';
  position:absolute;
  left:0;
  top:0;
}

OK。

2016.09.25更新

最近发现counter还支持传递一个值用来改变显示的序号如下。

代码:

<style>
body,div{
  margin:0;
  padding:0;
}
ul{
  list-style:none;
  counter-reset:a;
}
li{
  counter-increment: a;
}
li::before{
  content:counter(a,cjk-ideographic) ' ';
}

</style>

<ul>
  <li>CSS</li>
  <li>Javascript</li>
  <li>HTML5</li>
</ul>

这里用了“cjk-ideographic”它会按照大小数字来显示。

那么这个值哪里来的呢?它就是“list-style-type”里面的值,更多你可以去找这里面的。还可以按照a,b,c的顺序,这个也比较常用。

CSS计数器的更多相关文章

  1. css计数器详解

    什么是css计数器 体验更佳排版请戳原文链接:http://blog.liuxianan.com/css-counters.html 就是采用css给一些html元素自动生成编号,比如类似1.3.2这 ...

  2. 转载:CSS计数器的趣味时光之css计算数据

    CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一.简言之,用CSS使你持续某增加某个量,而无需JavaScript. 简单计数器 我们从这个简单的分页示例开始: 你见到的 ...

  3. CSS计数器的趣味时光

    CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一.简言之,用CSS使你持续某增加某个量,而无需JavaScript. 简单计数器 我们从这个简单的分页示例开始: 你见到的 ...

  4. 排行榜妙用——CSS计数器

    碰到的坑 小伙伴你们是否有碰到以下的情况,排行榜前3名的样式不一样,你们是怎么处理的么?

  5. CSS计数器妙用

    做web的经常会遇到类似排行榜的需求, 特别是要求前n名的样式和后面人不一样. 通常大多数人对于这个需求的做法都是在后端处理好排名名次, 在前端填入内容, 然后针对前n名做特殊的样式处理. 但是这样有 ...

  6. CSS计数器(序列数字字符自动递增)详解———张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4303 一.挖坟不可耻 ...

  7. css计数器 及 鼠标经过从中间扩散一个矩形(正方形长方形均可)

    <!DOCTYPE html> <html> <head> <title>css计数器--兼容IE8</title> <meta ch ...

  8. CSS计数器:counter

    最近的需求,明星字体销售排行榜中,需要对字体的销售情况进行排序. 在早期,只有ol和ul可以对子元素li进行排序:如果不使用这两个标签,就由前台开发去手动填写序号. 当然,在这个需求中,数据不是实时更 ...

  9. CSS 计数器详解

    在前端开发中总少不了列表项,对于列表项序号,射鸡师一般会列出个1,2,3...序号.在不了解css计数器属性之前,我一般会用精灵图,用类名来区分序列号图片.这样做尽管可以达到目的,但是很不方便,开发过 ...

随机推荐

  1. u3d avatar部件的理解

    u3d中带动画的fbx文件导入的时候,就会显示一个avatar组件,这个到底干嘛的一直没能很好的理解,翻看网上的介绍,基本都是告诉你,设置humanoid类型动画时,拖拉过去之类,但是这玩意到底存储了 ...

  2. ArcGIS百米网格自动生成

    最近需要用百米网格进行空间叠加分析,首先得自动生成百米网格数据.经过查找,发现ARCgis可以自动生成网格.方法如下 2.创建格网(Creat Fishnet).需要用到ArcGIS的ArcToolb ...

  3. vb小菜一枚-----了解“类型推理”

    局部类型推理 (Visual Basic) Visual Studio 2013   其他版本   Visual Basic 编译器使用类型推理来确定未使用 As 子句声明的局部变量的数据类型. 编译 ...

  4. 第53讲:Scala中结构类型实战详解

    今天学习了scala的结构类型,让我们看看代码 class Structural {def open() = print("A class interface opened") } ...

  5. MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC (转)

    一.问题描述 我所使用的编程环境:VS2010 出现的问题如下: MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号_WinMain@16,该符号在函数 _ ...

  6. onBlur事件与onfocus事件(js)

      onFocus事件就是当光标落在文本框中时发生的事件. onBlur事件是光标失去焦点时发生的事件. 可以编如下例子 1.html <HTML><HEAD><TITL ...

  7. cuda计算的分块

    gpu的架构分为streaming multiprocessors 每个streaming multiprocessors(SM)又能分步骤执行很多threads,单个SM内部能同时执行的thread ...

  8. maven安装nexus私服

    从nexus官网下载Nexus Repository Manager OSS 2.x的安装包:nexus-2.14.1-01-bundle.tar.gz,3.x版本需要jdk8及以上 解压 tar x ...

  9. Razor 中的@helper 与 @function 用法

    @helper : 可以有返回值,也可以没有返回值 @function :需要有返回值 可以将View中公共部分的代码抽取出来,变成一个独立的方法   公共部分 view        抽出的公共部分 ...

  10. 【Bugly干货分享】iOS内存管理:从MRC到ARC实践

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 对于iOS程序员来说,内存管理是入门的 ...