css如何动态累计数字?

导读:css如何动态累计数字?用于章节目录的序列数生成,用css的计数器实现起来比 js方式更简单!

伪元素

::after ::before伪元素设置content 可以在元素的首部和尾部添加内容,我们要在元素的首部添加序列号,所以要用到的是::before的content 属性

计数器

counter-reset 初始化或重置计数器的值;

格式:

counter-reset: 计数器的名字 [可选,计数器初始值]

counter-reset: chapter;   /*初始化 默认初始值为0*/
counter-reset: chapter 1; /*初始化 初始值为1*/
counter-reset: chapter item mini; /*初始化多个计数器*/

counter-increment 计数器累加;

格式:

counter-increment: 计数器的名字 [可选,计数器增量值]

counter-increment: chapter; /*累加,默认增量为 1*/
counter-increment: chapter 2; /*累加,增量为 2 */

counter() 计数器累计;

格式:

counter(计数器的名字, [可选type,同list-style-type])

css 复制代码
.chapter h2::before {
    content: counter(chapter, cjk-ideographic); /*第一个参数计数器的名字,必须与counter-reset和counter-increment中计数器的名字一致*/
 }

简单示例:

一个计数器运用:chapter
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        counter-reset: chapter;
      }
      ul {
        margin: 20px;
        padding: 0;
      }
      ul li {
        list-style-type: none;
        padding: 2px 0px;
      }

      .chapter {
        counter-reset: item;
        counter-increment: chapter;
      }
      .chapter h2::before {
        content: '第' counter(chapter, cjk-ideographic) '章、';
      }
    </style>
  </head>
  <body>
    <div class="chapter">
      <h2>章节内容</h2>
      <ul class="sendSeq">
        <li>
          段落内容
          <ul class="mini">
            <li>项目小结</li>
            <li>项目小结</li>
          </ul>
        </li>
        <li>段落内容</li>
        <li>段落内容</li>
      </ul>
    </div>
    <div class="chapter">
      <h2>章节内容</h2>
      <ul class="sendSeq">
        <li>
          段落内容
          <ul class="mini">
            <li>项目小结</li>
            <li>项目小结</li>
          </ul>
        </li>
        <li>段落内容</li>
        <li>段落内容</li>
      </ul>
    </div>
  </body>
</html>
多个计数器运用:chapter item mini
 <style>
      body {
        counter-reset: chapter item mini;
      }
      ul {
        margin: 20px;
        padding: 0;
      }
      ul li {
        list-style-type: none;
        padding: 2px 0px;
      }
      .chapter {
        counter-reset: item;
        counter-increment: chapter;
      }
      .chapter h2::before {
        content: '第' counter(chapter, cjk-ideographic) '章、';
      }

      .sendSeq li {
        font-size: 18px;
        counter-increment: item;
      }

      .sendSeq li::before {
        content: counter(chapter) '.' counter(item) ' ';
      }

      .mini {
        counter-reset: mini;
      }
      .mini li {
        font-size: 14px;
        counter-increment: mini;
      }

      .mini li::before {
        content: counter(chapter) '.' counter(item) '.' counter(mini) ' ';
      }
    </style>

补充: list-style-type 属性值

描述
none 无标记。
disc 默认。标记是实心圆。
circle 标记是空心圆。
square 标记是实心方块。
decimal 标记是数字。(1,2,3,4,等。)
decimal-leading-zero 0开头的数字标记。(01, 02, 03, 等。)
lower-roman 小写罗马数字(i, ii, iii, iv, v, 等。)
upper-roman 大写罗马数字(I, II, III, IV, V, 等。)
lower-alpha 小写英文字母The marker is lower-alpha (a, b, c, d, e, 等。)
upper-alpha 大写英文字母The marker is upper-alpha (A, B, C, D, E, 等。)
lower-greek 小写希腊字母(alpha, beta, gamma, 等。)
lower-latin 小写拉丁字母(a, b, c, d, e, 等。)
upper-latin 大写拉丁字母(A, B, C, D, E, 等。)
hebrew 传统的希伯来编号方式
armenian 传统的亚美尼亚编号方式
georgian 传统的乔治亚编号方式(an, ban, gan, 等。)
cjk-ideographic 简单的表意数字 (一,二,三,四,等。)
hiragana 标记是:a, i, u, e, o, ka, ki, 等。(日文平假名字符)
katakana 标记是:A, I, U, E, O, KA, KI, 等。(日文片假名字符)
hiragana-iroha 标记是:i, ro, ha, ni, ho, he, to, 等。(日文平假名序号)
katakana-iroha 标记是:I, RO, HA, NI, HO, HE, TO, 等。(日文片假名序号)
相关推荐
莹雨潇潇11 分钟前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr19 分钟前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho1 小时前
【TypeScript】知识点梳理(三)
前端·typescript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
太阳花ˉ2 小时前
html+css+js实现step进度条效果
javascript·css·html
小白学习日记3 小时前
【复习】HTML常用标签<table>
前端·html
丁总学Java3 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
yanlele3 小时前
前瞻 - 盘点 ES2025 已经定稿的语法规范
前端·javascript·代码规范
懒羊羊大王呀4 小时前
CSS——属性值计算
前端·css