转载:CSS计数器的趣味时光之css计算数据
CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一。简言之,用CSS使你持续某增加某个量,而无需JavaScript。
简单计数器
我们从这个简单的分页示例开始:
你见到的这些数字不是硬编码在HTML中,它们是以下CSS生成的:
|
1
2
3
4
5
6
7
8
9
10
11
|
body { counter-reset: pages; // initialize counter}a { counter-increment: pages; // increment counter}a::before { content: counter(pages); // display counter} |
计数属性遵循“文档出现顺序”的规则。首先遇到 Body 元素,初始化一个叫pages的计数器。然后遇到一个 a 元素就增加并显示pages计数器。
多个计数器
用不同的名字你就可以有多个计数器。这个例子有两个计数范围重叠的计数器,sections和boxes:
相关的CSS:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
body { counter-reset: sections boxes;}section { counter-increment: sections;}section::before { content: 'Section ' counter(sections);}.box { counter-increment: boxes;}.box::before { content: counter(boxes, upper-roman);} |
这里你可以看到用于立即初始化多个计数器的语法(第2行)。别致一点,boxes计数器显示为 upper-roman(译者注:大写罗马数字) (第18行)。 display 的所有参数选项和 list-style-type 属性是一样的,这里是文档。
统计用户选择
现在我们做些有趣的事情。计数属性可以被置于像 :checked 的伪类选择器中(译者注:原文为pseudo-selectors,但一般写作pseudo-classes selectors,故照例译为伪类选择器)。这使得计数器可以通过复选框反映用户的选择。下例是统计用户选了多少项。
CSS只是少许修改前面例子中的。唯一的区别是我们在伪类选择器 (input:checked) 中自增并仅在专门的 .total 元素中显示。
|
1
2
3
4
5
6
7
8
9
10
11
|
body { counter-reset: characters;}input:checked { counter-increment: characters;}.total::after { content: counter(characters);} |
控制增量
并非必须以1为量自增。可以按你增加任何的量。它们甚至可以负增长。以前面的例子为基础,这个例子为每个选择器设置了特殊的增量。
语法足够简单。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
body { counter-reset: sum;}#a:checked { counter-increment: sum 64; }#b:checked { counter-increment: sum 16; }#c:checked { counter-increment: sum -32; }#d:checked { counter-increment: sum 128; }#e:checked { counter-increment: sum 4; }#f:checked { counter-increment: sum -8; }.sum::before { content: '= ' counter(sum);} |
回到正题,你也可以控制计数器的初始值。
|
1
2
3
|
body { counter-reset: kittens 41; // starting out with 41 kittens} |
Potential Gotcha
display:none 的元素不会触发计数。如果你想隐藏一个元素但仍然触发计数,你必须用另一种方式隐藏。这是一种方式:
|
1
2
3
4
|
input { position: absolute; left: -9999px;} |
可能你已经注意到了,这正是我在最后两个例子中所做的。为了演示效果,我隐藏了当前的复选框,但仍然需要它们被选时而计数。
结束语
太好了,浏览器支持CSS计数。普大喜奔~
CSS计数器神奇,但也别忘了我们的老朋友<ol>和<li>。在基本列表中标序它们还是不错的。CSS计数器是取巧的方式,特别是因为它们在任何元素上都起作用,让你在语法和语义上更灵活。
更新:我应该提及无障碍阅读。CSS计数依赖于伪类元素中生成的内容。某些屏幕的读者会阅读到,某些则不会。因此,那些关键的内容最好不要依赖伪类元素。尽管示例教学的CSS计数器是精心设计的,但生产环境中我不会原封不动地使用它们。
来源:http://www.cnblogs.com/ranzige/archive/2015/06/10/4565123.html
转载:CSS计数器的趣味时光之css计算数据的更多相关文章
- CSS计数器的趣味时光
CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一.简言之,用CSS使你持续某增加某个量,而无需JavaScript. 简单计数器 我们从这个简单的分页示例开始: 你见到的 ...
- CSS计数器(序列数字字符自动递增)详解———张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4303 一.挖坟不可耻 ...
- css计数器详解
什么是css计数器 体验更佳排版请戳原文链接:http://blog.liuxianan.com/css-counters.html 就是采用css给一些html元素自动生成编号,比如类似1.3.2这 ...
- CSS 计数器详解
在前端开发中总少不了列表项,对于列表项序号,射鸡师一般会列出个1,2,3...序号.在不了解css计数器属性之前,我一般会用精灵图,用类名来区分序列号图片.这样做尽管可以达到目的,但是很不方便,开发过 ...
- 使用CSS计数器美化数字有序列表
在web设计中,使用一种井井有条的方法来展示数据是十分重要的,这样用户就可以很清晰的理解网站所展示的数据结构和内容,使用有序列表就是实现数据有组织的展示的一种简单方法. 如果你需要更加深入地控制有序列 ...
- CSS计数器
使用CSS计数器就像使用变量一样. 它有以下几个属性: counter-reset 创建或重置计数器 counter-increment 增长计数器 content 生成内容 counter() 将计 ...
- 排行榜妙用——CSS计数器
碰到的坑 小伙伴你们是否有碰到以下的情况,排行榜前3名的样式不一样,你们是怎么处理的么?
- CSS计数器妙用
做web的经常会遇到类似排行榜的需求, 特别是要求前n名的样式和后面人不一样. 通常大多数人对于这个需求的做法都是在后端处理好排名名次, 在前端填入内容, 然后针对前n名做特殊的样式处理. 但是这样有 ...
- 一款纯css实现的垂直时间线效果
今天给大家分享一款纯css实现的垂直时间线效果.垂直时间线适合放在类似任务时间安排的网页上.该实现采用了蓝色作为主题色,界面效果还不错.一起看下效果图: 实现的代码. html代码: ... 阅读原文 ...
随机推荐
- PHP中的常用魔术方法
魔术方法: 是指某些情况下,会自动调用的方法,称为魔术方法 php面向对象中,提供了这几个魔术方法,他们的特点都是 以双下划线__开头的 __construct() 构造方法 __destruct( ...
- 谈谈Delph中的类和对象2---类可以理解成一种特殊的数据结构、类型转换
三.类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换.比如下面代码为一个按钮(Button1)的单击事件 procedu ...
- sqlplus使用(二)
详见SQL*Plus® User's Guide and Reference Release 11.2 5 Using Scripts in SQL*Plus 1.定义环境变量 _EDITOR ...
- macosx安装MySQLdb
折腾了半天,记录一下. 先按照这个步骤安装mysql-python 如果python setup.py install 时候出现clang 错误,运行 python -E setup.py insta ...
- [译] EXTENDING JQUERY – 2.2 A simple plugin
2.2 一个简单的插件示例 jQuery 插件能做任何事情,这个已经由浩如烟海的各类第三方插件如证明.小到只影响一个元素,大到改变多个元素的外观和行为,jQuery 的各种功能等你来扩展. 2.2.1 ...
- a个人经验总结2
金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...
- jquery 生成 html 绑定
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 关于WCF的一些注意事项
1.服务代理,建立通道的方法,要注意及时关掉代理,因为服务设置有一个服务的最大连接数,超过这个连接数,则后面的连接将会等待,一直到超时,报错!! 2.在已有配置的基础上,利用代码更改终结点,如果重设了 ...
- [Outlook] 重新取得outlook中被禁止访问的文件
摘要:接收到老大的邮件,邮件中带有jar包,导致我无法接收到这个文件,outlook2010中提示:outlook禁止访问不安全……,相信很多人都遇到过这个问题,以前也遇到过,总没去想着解决这个问题, ...
- 在Entity Framework 7中进行数据迁移
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:虽然EF7重新设计了Entity Framework,不过也还是能够支持数据迁移的. Entity Fra ...