计数器(counter),“老一辈”程序员估计对这个东西印象深刻,早期的网站页面上经常会有这个东西,如今这种特征都变成了笑话。CSS里自己实现了一种计数器,很简单,很直接。使用CSS计数器,你可以实现简单的纯CSS的计数功能,并能将其显示到页面上。下面我们简单的看一下CSS计数器是如何使用的!
初始化CSS计数器
为了好理解,我们使用<OL> 和 <LI> 元素来做演示。首先我们要重置计数器,让它归零,并给它指定一个名称:
CSS Code复制内容到剪贴板- ol.slides {
- countercounter-reset: slideNum;
- }
这个计数器叫slideNum,下面的例子都都要使用它。
CSS计数器的自增
为了是计数器能够自增,我们需要使用counter-increment,并把计数器的名称跟到后面:
CSS Code复制内容到剪贴板- ol.slides > li {
- countercounter-increment: slideNum;
- }
这样,在CSS选择器下,每遇到一个符合条件li元素,counter-increment就会被调用一次,计数就是增加1。需要注意的是,这里的CSS选择器里使用了>符号,这样是为了滤掉有可能多重嵌套的li元素。否者你的计数值就会不是你想要的。
使用计数值
如果只计数而无法显示,那这个计数器也没多大用处,所以就有了counter()命令来输出计数器里的值,可以用在content属性里:
CSS Code复制内容到剪贴板- ol.slides li:after {
- content: "[" counter(slideNum) "]";
- }
有趣的是,这个counter()命令还可以接受第二个参数,当作同时计算多个元素时数据的分隔符:
假设有这样的HTML:
XML/HTML Code复制内容到剪贴板- <ol class="toc">
- <li>Intro</li>
- <li>Topic
- <ol>
- <li>Subtopic</li>
- <li>Subtopic</li>
- <li>Subtopic</li>
- </ol>
- </li>
- <li>Topic
- <ol>
- <li>Subtopic</li>
- <li>Subtopic</li>
- <li>Subtopic</li>
- </ol>
- </li>
- <li>Closing</li>
- </ol>
我们这样来写:
CSS Code复制内容到剪贴板- ol.toc, ol.toc ol {
- countercounter-reset: toc;
- }
- ol li {
- countercounter-increment: toc;
- }
- .toc li:before {
- content: "(Item " counters(toc, ".") ")";
- }
会输出下面的结果
XML/HTML Code复制内容到剪贴板- <ol class="toc">
- <li>(Item 1)Intro</li>
- <li>(Item 2)Topic
- <ol>
- <li>(Item 2.1)Subtopic</li>
- <li>(Item 2.2)Subtopic</li>
- <li>(Item 2.3)Subtopic</li>
- </ol>
- </li>
- <li>(Item 3)Topic
- <ol>
- <li>(Item 3.1)Subtopic</li>
- <li>(Item 3.2)Subtopic</li>
- <li>(Item 3.3)Subtopic</li>
- </ol>
- </li>
- <li>(Item 4)Closing</li>
- </ol>
你可以发现,当需要显示这种联级嵌套序号时,这种技术是非常的有用的。很像微软WORD里面文档的多重序号。
在 counter-reset 属性中,定义了一个随机 ID,其默认值是0。你可以在 counter-increment 属性中定义另外一个数字,作为计数的步长。
例如:counter-increment: i 2 将值显示偶数。
大多时候,CSS计数器都是配合:after和:before伪元素使用,我曾看到过有人在幻灯片、视频页面和文档里用过CSS计数器。相信你会找到其它可以使用它的地方。
CSS 计数器进阶
利用 CSS 计数器,能统计被用户选择的复选框个数:
- <div class="languages">
- <input id="c" type="checkbox"><label for="c">C</label>
- <input id="C++" type="checkbox"><label for="C++">C++</label>
- <input id="C#" type="checkbox"><label for="C#">C#</label>
- <input id="Java" type="checkbox"><label for="Java">Java</label>
- <input id="JavaScript" type="checkbox"><label for="JavaScript">JavaScript</label>
- <input id="PHP" type="checkbox"><label for="PHP">PHP</label>
- <input id="Python" type="checkbox"><label for="Python">Python</label>
- <input id="Ruby" type="checkbox"><label for="Ruby">Ruby</label>
- </div>
- <p class="total">
- Total selected:
- </p>
- .languages {
- countercounter-reset: characters;
- }
- input:checked {
- countercounter-increment: characters;
- }
- .total:after {
- content: counter(characters);
- }
在这个示例中,我们会增加 input:checked 的数量并打印出来。
你还能创建一个小型计算器:
CSS Code复制内容到剪贴板- <div class="numbers">
- <input id="one" type="checkbox"><label for="one">1</label>
- <input id="two" type="checkbox"><label for="two">2</label>
- <input id="three" type="checkbox"><label for="three">3</label>
- <input id="four" type="checkbox"><label for="four">4</label>
- <input id="five" type="checkbox"><label for="five">5</label>
- <input id="one-hundred" type="checkbox"><label for="one-hundred">100</label>
- </div>
- <p class="sum">
- Sum
- </p>
- .numbers {
- countercounter-reset: sum;
- }
- #one:checked { countercounter-increment: sum 1; }
- #two:checked { countercounter-increment: sum 2; }
- #three:checked { countercounter-increment: sum 3; }
- #four:checked { countercounter-increment: sum 4; }
- #five:checked { countercounter-increment: sum 5; }
- #one-hundred:checked { countercounter-increment: sum 100; }
- .sum::after {
- content: '= ' counter(sum);
- }
CSS,计数器,counter
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]