百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

前端入门——CSS 计数器

myzbx 2025-03-05 19:31 8 浏览

通俗讲 CSS 计数器就是css定义的一个变量,这些变量根据 CSS 递增或递减规则跟踪使用次数。你可以自定义一个计数器,也可以修改 list-item默认生成的应用于所有有序列表的计数器。

要使用 CSS 计数器,我们将使用以下属性:

  • counter-reset- 创建或重置计数器
  • counter-increment- 增加一个计数器值
  • content- 插入生成的内容
  • counter()或counters()函数 - 将计数器的值添加到元素上

CSS 计数器可以让你根据内容在文档中的位置调整其显示的外观。例如,你可以使用计数器自动为网页中的标题编号,或者更改有序列表的编号。

创建或重置计数器

在使用 CSS 计数器前,首先要使用counter-reset 创建一个计数器变量。

使用 counter-reset 你可以创建或重置一个计数器变量,其语法如下:

/*定义一个名为‘counter-name’的计数器,且默认值为0*/
counter-reset: counter-name;  
/*定义一个名为‘counter-name’的计数器,且默认值为-1*/
counter-reset: counter-name -1;  
/*定义多个计数器,分别是counter1、counter2,其默认值分别是1、4*/
counter-reset: counter1 1 counter2 4;  
/*不使用计数器*/
counter-reset: none;

计数器值变化

使用 counter-increment 属性你可以递增或递减计数器值,语法如下:

/*默认每次递增1*/
counter-increment: counter-name;
/*每次递增-1*/
counter-increment: counter-name -1;
/*同时定义多个计数器的递增或递减值*/
counter-increment: counter 1 counter2 -4;
/*不递增或递减*/
counter-increment: none;

显示计数器值

要想在页面中显示计数器值,必须要在content属性中使用counter()或counters()函数,通常content属性又和::before、::after等伪元素一起使用。

counter()语法:

/*基础用法*/
counter(countername)
/*第二个参数是数字,字母或符号的简单预定义计数器样式*/
counter(countername,upper-roman)

counters() 函数常用于嵌套元素的计数,注意和counter()函数的区别.

counters()语法:

/*注意第二个参数指分隔符*/
counters(countername, '-');
/*注意第三个参数指预定义的关键字,比如大小写罗马字母、数字或符号*/
counters(countername, '.', upper-roman)

反向计数器

反向计数器是一种用于递减(而非递增)的计数器。反向计数器可以通过在 counter-reset 属性中将计数器的名称用 reversed() 函数包裹来创建的。

反向计数器的默认初始值与元素的数量相同(不同于常规的默认初始值为 0 的计数器)。

语法如下:

counter-reset: reversed(section);

注意: 对于非反向计数器,你也仍然可以使用 counter-increment 属性实现递减。使用反向计数器的优点在于:其默认初始值可以自动根据元素数量生成,自动应用于有序列表的 list-item 计数器也可以借此反转编号。

一个计数器自动编号的示例

下面的示例将创建一个计数器,然后每个

元素的计数器值递增1,并在每个

元素的开头添加“Section <计数器的值>:”,如下代码:

html:

Using CSS Counters

HTML Tutorial

CSS Tutorial

JavaScript Tutorial

Python Tutorial

SQL Tutorial

css:

body {
  counter-reset: section;
}
h2::before {
  counter-increment: section;
  content: "Section " counter(section) ": ";
}

效果:

一个嵌套计数器的示例

有时我们需要制作一个类似目录的效果,这时可以使用多个计数器来实现,如下示例:

html:

HTML/CSS Tutorials

HTML

CSS

Bootstrap

W3.CSS

Scripting Tutorials

JavaScript

jQuery

React

Programming Tutorials

Python

Java

C++

css:

body {
  counter-reset: section;
}
h1 {
  counter-reset: subsection;
}
h1::before {
  counter-increment: section;
  content: "Section " counter(section) ". ";
}
h2::before {
  counter-increment: subsection;
  content: counter(section) "." counter(subsection) " ";
}

效果:

如上示例,其中每个h1对应的计数器都会重置计数器值为0,这里要特别注意。

一个反向计数器的示例

html:

Introduction

Body

Conclusion

css:

  /* 创建一个反向计数器变量 section */
body {
  counter-reset: reversed(section); 
}
h3::before {
  counter-increment: section -1; 
  content: "Section " counter(section) ": "; 
}

如果你的浏览器支持 reversed() 函数,其结果就会类似于这样:

使用 counters()在多级嵌套元素上创建计数器

这里使用了有序列表,使用

    元素创建的有序列表,会自动应用名为 list-item 的计数器。

    html:

    1. item
    2. item
      1. item
      2. item
      3. item
        1. item
        2. item
        3. item
      4. item
    3. item
    4. item
    1. item
    2. item

    css

    ol {
      counter-reset: section;
      list-style-type: circle;
    }
    
    li::before {
      counter-increment: section;
      content: counters(section,".") " ";
    }

    效果:

    注意这个示例和之前的嵌套计数器那个例子的区别,这里的html结构是嵌套的父子结构,之前的那个示例html元素是同级的,这就是counters()函数和counter()函数的区别

    总结

    css 计数器在制作目录或一些按指定序列排列的效果时非常有用,css计数器目前一般都是和content属性结合使用。注意反向计数器目前并不是所有浏览器都支持,使用时注意兼容性。

    感谢您的关注,欢迎指正、补充。

    参考资料:

    https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Counter_Styles/Using_CSS_counters

    https://www.w3schools.com/css/css_counters.asp

    http://t.zoukankan.com/yangyang63963-p-5922002.html

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...