当前位置: 首页 > news >正文

CSS中使用应用在伪元素中的计数器属性counter-increment

在CSS中,counter-increment 是一个用于递增计数器值的属性。它通常与 counter-resetcontent 属性一起使用,以在文档中的特定位置(如列表项、标题等)插入自动生成的数字或符号。

counter-increment

  1. 基本用法

使用 counter-increment 可以设置一个递增计数器的值。默认情况下,计数器的值是0,并且每次递增1。但你可以指定一个不同的增量值。

h1 {counter-reset: section; /* 重置计数器 */
}h2 {counter-increment: section; /* 递增计数器 */content: "Section " counter(section) ": "; /* 使用计数器的值 *//* 注意:content 属性通常与 ::before 或 ::after 伪元素一起使用 */
}h2::before {content: "Section " counter(section) ": ";
}
  1. 指定增量值

你可以指定一个增量值,而不是默认的0。

h2 {counter-increment: section 2; /* 每次递增2 */
}
  1. 多个计数器

你可以递增多个计数器,只需用空格分隔它们即可。

h2 {counter-increment: section 1 subsection; /* 递增section和subsection两个计数器 */
}
  1. 与counter-reset结合使用

通常,你会在文档的开始处使用 counter-reset 来重置计数器的值,然后在需要的地方使用 counter-increment 来递增它。

  1. 与content和伪元素结合使用

content 属性通常与 ::before::after 伪元素一起使用,以在元素的内容之前或之后插入计数器的值。

  1. 计数器的作用域

计数器的作用域是CSS的级联作用域。如果你在一个元素上重置或递增了一个计数器,那么该元素的所有后代元素都可以访问该计数器(除非它们在自己的作用域内重置了它)。

  1. 继承性

counter-incrementcounter-reset 属性不是可继承的。这意味着它们不会影响元素的子元素,除非你在子元素上明确设置了这些属性。

  1. 命名规范

计数器名称是大小写敏感的,并且不能包含空格特殊字符(除了连字符"-")。

  1. 浏览器兼容性

大多数现代浏览器都支持 counter-increment 和相关的计数器属性。然而,一些较旧的浏览器可能不支持这些功能,因此在使用它们之前,最好检查目标浏览器的兼容性。

  1. 示例用途
  • 自动编号的列表项
  • 带有章节编号的文档标题
  • 自定义编号的段落或其他元素

counter() 方法

counter() 是一个函数返回一个代表计数器的当前值的字符串,通常与 counter-resetcounter-incrementcontent 属性一起使用,以在文档中自动插入数字或序号。这通常用于创建列表、图表、目录或其他需要连续计数的元素。

语法

/* 简单使用 */
counter(计数器名称);/* 更改计数器显示 */
counter(countername, upper-roman)
  1. 通过上边定义后我们就开始插入计数器的值
    使用 content 属性和 counter() 函数将计数器的值插入到元素的伪元素(如 ::before::after)中。
h1::before {content: "Section " counter(section) ": "; /* 在 h1 元素前插入 "Section X: ",其中 X 是 "section" 计数器的当前值 */
}

完整的示例:

.box-1{/* 重置一个名为 "my-counter-1"计数器,并且从0开始 */counter-reset: my-counter-1;
}.box-1 p::before {/* 每次使用计数器的时候都会自动增加1,这里从开始为0+1,所以就是1开始显示increment字面意思是递增 */counter-increment: my-counter-1;content: "基础 " counter(my-counter-1) "、 ";
}
<div class="box-1"><p>HTML</p><p>CSS</p><p>JavaScript</p><p>Bootstrap</p><p>Vue</p><p>React</p><p>jQuery</p>
</div>

在上面的示例中,每个 p 元素前都会自动插入一个序号,如 "基础 1: "、"基础 2: " 等。

  1. 您还可以给counter方法传递第二个参数来改变序列的类型

我们可以设置计数器类型,罗马数字

<div class="box-2"><h4>JavaScript</h4><p>Prototype</p><p>jQuery</p><p>Backbone.js</p><p>require.js</p><p>vue.js</p><p>react.js</p><p>angular.js</p>
</div>

.box-2{counter-set: romanNumber;
}
.box-2 p::before{counter-increment: romanNumber;content: counter(romanNumber, upper-roman) ". ";
}

上边的案例我们通过给counter方法传递第二个参数upper-roman来设置序列为罗马数字序列

counter支持的类型和list-style-type一样

counters() 方法

counters() 是一个嵌套计数器,返回表示指定计数器当前值的连接字符串。counters() 函数有两种形式:

  • counters(name, string)
  • counters(name, string, style)。

它通常和伪元素搭配使用,但是理论上可以在支持<string>值的任何地方使用。生成的文本是具有给定名称的所有计数器的值,从最外层到最内层,之间由指定字符串分隔。计数器以指示的样式呈现,如果未指定样式,则默认为十进制。

语法:

/* 简单用法-样式默认为十进制,并且后边跟一个“-”连接 */
counters(countername, '-');/* 改变计数器显示样式为罗马字符,并且后边跟“.”连接 */
counters(countername, '.', upper-roman)

最后贴上案例查看:

  • https://jsrun.net/QyDKp 计数器基本使用
  • https://jsrun.net/kWDKp/edit 不同样式的序列样式,和嵌套计数器

相关文章:

CSS中使用应用在伪元素中的计数器属性counter-increment

在CSS中&#xff0c;counter-increment 是一个用于递增计数器值的属性。它通常与 counter-reset 和 content 属性一起使用&#xff0c;以在文档中的特定位置&#xff08;如列表项、标题等&#xff09;插入自动生成的数字或符号。 counter-increment 基本用法&#xff1a; 使…...

【SkiaSharp绘图08】SKPaint方法:自动换行、是否乱码、字符偏移、边界、截距、文本轮廓、测量文本

文章目录 SKPaint方法BreakText 计算指定宽度内可绘制的字符个数ContainsGlyphs字体是否包含文本字符(是否会乱码)GetGlyphOffsets 字符偏移量GetGlyphPositions 偏移坐标GetGlyphWidths 每个字符的宽度与边界GetHorizontalTextIntercepts 轮廓截距GetPositionedTextIntercepts…...

深入理解Servlet Filter及其限流实践

引言 在Java Servlet技术中&#xff0c;Filter是一个拦截器&#xff0c;它允许开发者在请求到达目标资源之前或响应发送给客户端之后&#xff0c;对请求或响应进行拦截和处理。这种机制为实现诸如身份验证、日志记录、请求修改等功能提供了极大的灵活性。 Filter基础 Filter…...

使用cv2对视频指定区域进行去噪

视频去噪其实和图象一样&#xff0c;只是需要现将视频截成图片&#xff0c;在对图片进行去噪&#xff0c;将去噪的图片在合成视频就行。可以利用cv2.imread()、imwrite()等轻松实现。 去噪步骤 1、视频逐帧读成图片 2、图片指定区域批量去噪 2、去噪后的图片写入视频 1、视频逐…...

AI在创造还是毁掉音乐?

AI对音乐产业的影响是复杂而多维的&#xff0c;既有创造性的贡献也存在潜在的挑战。我们可以从以下几个角度来分析这个问题&#xff1a; ### 创造性贡献 1. **音乐创作**&#xff1a;AI可以帮助音乐家创作新的旋律和和声&#xff0c;甚至生成完整的音乐作品。例如&#xff0c…...

【2023年全国青少年信息素养大赛智能算法挑战赛复赛真题卷】

目录 2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题 2023全国⻘少年信息素养⼤赛智能算法挑战复赛⼩学组真题 2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题 1. 修复机器人的对话词库错误 【题目描述】 基于人工智能技术的智能陪伴机器人的语言词库被…...

Android系统揭秘(一)-Activity启动流程(上)

public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options) { IApplicationThread whoThread (IApplicationThread) contextThread; … try { … int result …...

使用Java实现哈夫曼编码

前言 哈夫曼编码是一种经典的无损数据压缩算法&#xff0c;它通过赋予出现频率较高的字符较短的编码&#xff0c;出现频率较低的字符较长的编码&#xff0c;从而实现压缩效果。这篇博客将详细讲解如何使用Java实现哈夫曼编码&#xff0c;包括哈夫曼编码的原理、具体实现步骤以…...

IDEA、PyCharm等基于IntelliJ平台的IDE汉化方式

PyCharm 或者 IDEA 等编辑器是比较常用的&#xff0c;默认是英文界面&#xff0c;有些同学用着不方便&#xff0c;想要汉化版本的&#xff0c;但官方没有这个设置项&#xff0c;不过可以通过插件的方式进行设置。 方式1&#xff1a;插件安装 1、打开设置 File->Settings&a…...

visual studio 创建c++项目

目录 环境准备&#xff1a;安装 visual studiovisual studio 创建c项目Tips&#xff1a;新建cpp文件注释与取消注释代码 其他初学者使用Visual Studio开发C和C时常遇到的3个坑 环境准备&#xff1a;安装 visual studio 官网&#xff1a;https://visualstudio.microsoft.com/zh…...

MGV电源维修KUKA机器人电源模块PH2003-4840

MGV电源维修 库卡电源模块维修 机器人电源模块维修 库卡控制器维修 KUKA电源维修 库卡机器人KUKA主机维修 KUKA驱动器模块维修 机械行业维修&#xff1a;西门子系统、法那克系统、沙迪克、FIDIA、天田、阿玛达、友嘉、大宇系统&#xff1b;数控冲床、剪板机、折弯机等品牌数控…...

设置浏览器互不干扰

目录 一、查看浏览器文件路径 二、 其他盘新建文件夹Cache 三、以管理员运行CMD 四、执行命令 一、查看浏览器文件路径 chrome://version/ 二、 其他盘新建文件夹Cache D:\chrome\Cache 三、以管理员运行CMD 四、执行命令 Mklink /d "C:\Users\Lenovo\AppData\Loca…...

kafka操作命令详解

目录 1、集群运维命令 1.1、集群启停命令 1.3、集群迁移命令 1.4、权限管理命令 1.4.1、权限参数介绍 1.4.2、增加权限命令 1.4.3、移出权限命令 1.4.4、查看所有topic权限命令 1.4.5、查看某个topic权限命令 2、生产者命令 2.1、创建topic命令 2.2、删除topic命令 …...

graalvm jdk和openjdk

下载地址:https://github.com/graalvm/graalvm-ce-builds/releases 官网: https://www.graalvm.org...

docker基础使用教程

1.准备工作 例子&#xff1a;工程在docker_test 生成requirements.txt文件命令&#xff1a;&#xff08;使用参考链接2&#xff09; pip list --formatfreeze > requirements.txt 参考链接1&#xff1a; 安装pipreqs可能比较困难 python 项目自动生成环境配置文件require…...

计算机网络 交换机的安全配置

一、理论知识 1.交换机端口安全功能介绍 交换机端口安全功能是针对交换机端口进行安全属性的配置&#xff0c;以控制用户的安全接入。主要包括以下两种配置项&#xff1a; ①限制交换机端口的最大连接数&#xff1a;控制交换机端口连接的主机数量&#xff1b;防止用户进行恶…...

深入解析大语言模型系列:Transformer架构的原理与应用

引言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;近几年取得了突破性的进展&#xff0c;而 Transformer 作为这些模型的核心架构&#xff0c;功不可没。本文将详细介绍 Transformer 的原理、结…...

uni-app地图组件控制

uni.createMapContext(mapId,this) 创建并返回 map 上下文 mapContext 对象。在自定义组件下&#xff0c;第二个参数传入组件实例this&#xff0c;以操作组件内 <map> 组件。 注意&#xff1a;uni.createMapContext(mapId, this) app-nvue 平台 2.2.5 支持 uni.create…...

前端调用api发请求常用的请求头content- type的类型和常用场景

Content-Type 是一个非常重要的HTTP头&#xff0c;它定义了发送给服务器或客户端的数据的MIME类型。这对于服务器和客户端正确解析和处理数据至关重要。下面是一些常见的 Content-Type 值及其用途和区别。 常见的 Content-Type 值 text/plain • 用途: 纯文本&#xff0c;无格…...

数据仓库之SparkSQL

Apache Spark SQL是Spark中的一个组件&#xff0c;专门用于结构化数据处理。它提供了通过SQL和DataFrame API来执行结构化数据查询的功能。以下是对Spark SQL的详细介绍&#xff1a; 核心概念 DataFrame: 定义: DataFrame是一个分布式数据集合&#xff0c;类似于关系型数据库中…...

如何高效配置Kodi PVR IPTV Simple:专业级家庭IPTV直播系统部署指南

如何高效配置Kodi PVR IPTV Simple&#xff1a;专业级家庭IPTV直播系统部署指南 【免费下载链接】pvr.iptvsimple IPTV Simple client for Kodi PVR 项目地址: https://gitcode.com/gh_mirrors/pv/pvr.iptvsimple Kodi PVR IPTV Simple是一款功能强大的开源IPTV客户端插…...

网络基础知识整理(精简通用版)20260331-001篇

文章目录 网络基础知识整理(精简通用版) 一、网络基本概念 二、网络拓扑结构 三、OSI 七层模型(核心参考) 四、TCP/IP 模型(实际互联网标准) 五、IP 地址基础 六、传输层协议(TCP vs UDP) TCP(传输控制协议) UDP(用户数据报协议) 七、常见网络协议与端口 八、网络设…...

OpenCVSharp摄像头开发避坑指南:C#实现高清录像+实时滤镜(WinForm版)

OpenCVSharp工业级摄像头开发实战&#xff1a;高清录像与实时滤镜的进阶技巧 在工业视觉检测和实时直播领域&#xff0c;稳定高效地采集视频流是核心需求。C#开发者常选择OpenCVSharp作为计算机视觉开发工具&#xff0c;但实际应用中总会遇到帧率不稳定、资源泄漏或参数配置不当…...

别再死记硬背GAT公式了!用Python+PyTorch手把手图解注意力机制(附代码)

图解GAT&#xff1a;用PythonPyTorch拆解图注意力机制的实现奥秘 当你第一次听说图注意力网络&#xff08;GAT&#xff09;时&#xff0c;是否被那些复杂的数学公式和抽象概念吓退&#xff1f;本文将以全新的可视化方式&#xff0c;带你从零实现一个完整的GAT层&#xff0c;用代…...

Qwen3-Embedding-4B入门必看:Embedding模型vs LLM生成模型的核心差异

Qwen3-Embedding-4B入门必看&#xff1a;Embedding模型vs LLM生成模型的核心差异 1. 引言&#xff1a;从关键词搜索到语义理解 你是否曾经遇到过这样的困扰&#xff1a;在搜索引擎中输入"苹果"&#xff0c;结果既出现了水果苹果的信息&#xff0c;又出现了苹果公司…...

实时口罩检测系统性能优化:从算法到工程全链路调优

实时口罩检测系统性能优化&#xff1a;从算法到工程全链路调优 1. 引言 在公共场所疫情防控中&#xff0c;实时口罩检测系统发挥着重要作用。但在实际部署中&#xff0c;很多开发者会遇到性能瓶颈&#xff1a;检测速度跟不上视频流帧率、GPU资源占用过高、误报漏报频发等问题…...

编程技巧:模式切换程序框架

目录 1.模式切换程序框架 2.实现思路 3.模式切换程序框架 4.模式切换每个模式模块化流程 5.代码 Mode1.c Mode2.c Mode3.c Global.c main.c 1.模式切换程序框架 Init&#xff1a;进入模式前&#xff0c;执行一遍&#xff0c;用于初始化工作 Loop&#xff1a;执行完In…...

QT6.5串口编程第一步:用CMakeLists.txt引入SerialPort模块的避坑指南

QT6.5串口编程避坑指南&#xff1a;CMakeLists.txt配置全解析 当你满怀期待地在QT6.5项目中引入串口通信功能&#xff0c;却在编译时遭遇"找不到QtSerialPort"的红色错误提示&#xff0c;这种挫败感我深有体会。作为一位经历过无数次类似"战斗"的开发者&am…...

springboot+vue基于web的汽车后市场维修保养管理系统的设计与实现

目录系统功能模块分析维修保养业务模块财务与统计模块客户端交互功能技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统功能模块分析 用户管理模块 实现用户注册、登录、权限管理&#xff08;管理员、员工、客户…...

UniApp跨平台开发入门:用现有Vue代码快速生成小程序/App(2023最新版)

UniApp跨平台开发实战&#xff1a;2023年Vue代码高效迁移指南 移动互联网时代&#xff0c;开发者常面临一个核心挑战&#xff1a;如何用最小成本将Web应用扩展到移动端。如果你手头已有成熟的Vue项目&#xff0c;UniApp可能是最经济的跨平台解决方案——它允许你复用80%以上的现…...