zoukankan      html  css  js  c++  java
  • CSS 计数器

    CSS 计数器的值通过使用 counter-reset 和 counter-increment 操作,在 content 上应用 counter() 或 counters()函数来显示在页面上。
    counter-reset:使用CSS计数器之前,必须重置一个值,默认是0(任意整数,若不是整数则默认为:0)(这里的0是指计数器的初始值,而不是指阿拉伯
    数字0,如计数器计算的是字母,那么0就代表 a/A,如计数器计算的是中文的数字,那么0就代表 一/壹,如计算罗马数字则代表 i/
    I,以此类推)
    counter-increment:计数器每次增加/减少的差值(任意整数)(如初始值为:a,差值为:3,那么下一个值就为:d)
    counter()/counters():计数器函数(通过调用计数器函数来实现值的增加/减少)
    counter(计数器名称 [,风格类型]),函数计数器不会嵌套,counters(计数器名称 ,嵌套时候的拼接字符串 [,风格类型]),函数计数器会嵌套),计数器会嵌套
    本质上CSS计数器是由CSS维护的变量,这些变量可能根据CSS规则增加以跟踪使用次数。CSS 计数器有两个计数器函数: counter() 和 counters()。
    下面通过例子说明:
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>CSS Counter/Counters</title>
      <style type="text/css">
        /*Counter*/
        /*使用CSS计数器之前,必须重置一个值,默认是0(任意整数,若不是整数则默认为:0)。使用counter()/counters()函数来给元素增加计数器。 */
        /*为每个 .counter 下的 ol创建计数器实例 countA*/
        .counter ol{      
          /*计数器初始值为默认为起始值:0(任意整数,若不是整数则默认为:0)*/
          counter-reset: countA 0;/*下面设置计数器 countB增加的差值为:1 ,0+1=1,因此第一个值与初始值的差值为:1 */
          
          /*列表默认风格类型是阿拉伯数字*/
          /* list-style-type: none;       */
          /* list-style-type: disc;       */
        }
    
        /*增加计数器的当前实例的值 countA*/
        .counter ol li{
          color: red;
          /*计数器每次增加的差值为 1(如:1-->2,a-->b,I-->II等) 负数则递减*/
          counter-increment: countA 1;
        }
    
        /*添加并显示计数器,使用 counter()函数,不嵌套*/
        .counter ol li::before{
          color: black;
    
          /*counter(计数器名称 [,风格类型])*/
          content: counter(countA) " ~ ";/*默认数字*/
          content: counter(countA,lower-alpha) " ~ ";/*小写字母*/
          content: counter(countA,upper-roman) " ~ ";/*大写罗马数字*/      
        }
    
        /*Counters*/
        /*使用CSS计数器之前,必须重置一个值,默认是0(任意整数,若不是整数则默认为:0)。使用counter()/counters()函数来给元素增加计数器。 */
        /*为每个 .counters 下的 ol创建计数器实例 countB*/
        .counters ol{
          /*计数器初始值为默认为起始值:0(任意整数,若不是整数则默认为:0*/      
          counter-reset: countB -1;/*下面设置计数器 countB增加的差值为:2 ,-1+2=1,因此第一个值与初始值的差值为:1 */
    
          list-style-type: cjk-heavenly-stem;
        }
        .counters ol li::first-letter{
          color: black;
        }
    
        /*增加计数器的当前实例的值 countB*/
        .counters ol li{
          color: red;
    
          /*计数器每次增加的差值为 2(如:1-->3,a-->c,I-->III等) 负数则递减*/
          counter-increment: countB 2;
        }
    
        /*添加并显示计数器,使用 counters()函数,会嵌套,当前计数器的值会嵌套在它的上一级计数器的值的后面*/    
        .counters ol li::before{
          color: black;
    
          /*counters(计数器名称 ,嵌套时候的拼接字符串 [,风格类型])*/
          content: counters(countB,"+  ",upper-alpha) " ";
        }
    
    
    
      </style>
    </head>
      <em>counter() 没有嵌套,按设置的值依次增加</em>
      <div class="counter">
        <ol>
          <li>ouuter li 1 ,这一级的计数器为:I (因为: .counters ol{ counter-reset: countB 0; })
            <ol>
              <li>middle li 1 ,这一级的计数器为:I (因为: .counters ol{ counter-reset: countB 0; })</li>
              <li>middle li 2</li>
              <li>middle li 3
                <ol>
                  <li>inner li 1 ,这一级的计数器为:I (因为: .counters ol{ counter-reset: countB 0; })</li>
                  <li>inner li 2</li>
                  <li>inner li 3</li>
                </ol>
              </li>          
            </ol>
          </li>
    
          <li>ouuter li 2</li>
          <li>ouuter li 3</li>
        </ol>
      </div>
    
      <em>counters() 会嵌套,当前计数器的值会嵌套在它的上一级计数器的值的后面</em>
      <div class="counters">
          <ol>
            <li>ouuter li 1
              <ol>
                <li>middle li 1 ,上一级的计数器为: A ,这一级的计数器为:A (因为: .counters ol{ counter-reset: countB 0; }) ,嵌套连接符号为:+ ,得到:A+ A</li>
                <li>middle li 2</li>
                <li>middle li 3
                  <ol>
                    <li>inner li 1 ,上一级的计数器为: A+ E ,这一级的计数器为:A (因为: .counters ol{ counter-reset: countB 0; }) ,嵌套连接符号为:+ ,得到:A+ E+ A</li>
                    <li>inner li 2</li>
                    <li>inner li 3
                      <ol>
                        <li>hi 1 ,上一级的计数器为: A+ E+ E ,这一级的计数器为:A (因为: .counters ol{ counter-reset: countB 0; }) ,嵌套连接符号为:+ ,得到:A+ E+ E+ A</li>
                        <li>hi 2</li>
                        <li>hi 3</li>
                      </ol>
                    </li>
                  </ol>
                </li>          
              </ol>
            </li>
      
            <li>ouuter li 2</li>
            <li>ouuter li 3</li>
          </ol>
        </div>
    
    </html>
    运行结果:

    
    
    
    
    
    
    
  • 相关阅读:
    Selenium+Pytest自动化测试框架实战
    WPF性能优化经验总结
    C#跨窗体调用控件
    C# lock
    硬实时系统,到底多硬才算Hard Real Time System
    [GPIO]推荐一种超简单的硬件位带bitband操作方法,让变量,寄存器控制,IO访问更便捷,无需用户计算位置
    【STM32F407的DSP教程】第50章 STM32F407的样条插补实现,波形拟合丝滑顺畅
    实战技能分享,如何让工程代码各种优化等级通吃,含MDK AC5,AC6,IAR和GCC
    【深入探讨】DMA到底能不能起到加速程序执行的作用,DMA死等操作是否合理,多个DMA数据流同时刷是否处理过来
    《安富莱嵌入式周报》第238期:2021.11.012021.11.07
  • 原文地址:https://www.cnblogs.com/go4it/p/10019164.html
Copyright © 2011-2022 走看看