先来看一下这几个属性

counter-reset 计数器重置

参数
1.计数器名称
2.计数器初始值
默认值为0,必须为整数,可以为负值,若为非整数则默认为0

counter-increment计数器-递增

参数
1.计数器名称
就是给那个计数器递增值
2.递增的幅度
默认值为1,必须为整数,可以为负值

counter

参数
name:计数器名称(counter-reset中设置的名称)
list-style-type计数样式,例如lower-alpha英文小写字母,lower-roman小写罗马数字,upper-roman大写罗马数字,默认为阿拉伯数字。如果你不了解这些样式的话到这里查看吧

  • counter只能用在content中

  • content只能用在before和after这些伪类里

  1. .result::before{
  2. content:counter(veg);
  3. }

举个例子

html
  1. <div class="container">
  2. <div class="item">西红柿</div>
  3. <div class="item">黄瓜</div>
  4. <div class="item">菠菜</div>
  5. <div class="item">西葫芦</div>
  6. <div class="item">冬瓜</div>
  7. <div class="item">白菜</div>
  8. <div class="item">苦瓜</div>
  9. <div class="item">茄子</div>
  10. <br>您选择了
  11. <div class="result"></div>&nbsp;个
  12. </div>

css
  1. .container{
  2. padding: 50px;
  3. counter-reset: veg 0;
  4. }
  5. .item{
  6. display: inline-block;
  7. height: 50px;
  8. line-height: 50px;
  9. border-radius: 10px;
  10. border:1px solid #666666;
  11. margin: auto;
  12. text-align: center;
  13. padding:0 20px;
  14. color: #666;
  15. }
  16. .item-active{
  17. counter-increment: veg 1;
  18. background-color:green;
  19. color: white;
  20. border-color: green;
  21. }
  22. .result{
  23. display: inline-block;
  24. }
  25. .result::before{
  26. content: counter(veg,upper-roman);
  27. color: red;
  28. }

js
  1. //这里的js只负责添加标记的class,具体统计数量由css实现
  2. var $=function (tag) {
  3. return document.querySelectorAll(tag);
  4. }
  5. for(var i=0;i<$(".item").length;i++) {
  6. $(".item")[i].addEventListener('click', function () {
  7. this.classList.toggle('item-active');
  8. });
  9. }

效果

css计数器 - 图1

counters 嵌套计数

html
  1. <div class="reset">
  2. <div class="counter">第一部
  3. <div class="reset">
  4. <div class="counter">第一部第一章</div>
  5. <div class="counter">第一部第二章
  6. <div class="reset">
  7. <div class="counter">第一部第二章第一节</div>
  8. <div class="counter">第一部第二章第二节</div>
  9. <div class="counter">第一部第二章第三节</div>
  10. </div>
  11. </div>
  12. <div class="counter">第一部第三章</div>
  13. </div>
  14. </div>
  15. <div class="counter">第二部
  16. <div class="reset">
  17. <div class="counter">第二部第一章第一节</div>
  18. <div class="counter">第二部第一章第二节</div>
  19. <div class="counter">第二部第一章第三节</div>
  20. </div>
  21. </div>
  22. <div class="counter">第三部
  23. <div class="reset">
  24. <div class="counter">第三部第一章</div>
  25. </div>
  26. </div>
  27. </div>

css
  1. .reset {
  2. padding-left: 30px;
  3. counter-reset: chapters;
  4. line-height: 2;
  5. color: #666;
  6. }
  7. .counter:before {
  8. content: counters(chapters, '-') '. ';
  9. counter-increment: chapters;
  10. }

效果

css计数器 - 图2