HTML5与CSS3基础语法自学教程(二十二)

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆 在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo 阅读详情

本文首发于【前端课湛】微信公众号。可以在微信里搜索【前端课湛】关注,第一时间看文章!

导读:本小节讲解 CSS 中的计数器,其中包含了计数器的概念,以及计数器中所包含的属性和函数等内容。计数器的应用场景主要集中在复杂编号的列表中,但涉及内容比较难懂。

什么是计数器

CSS 中的计数器本质上来说就是由 CSS 维护的变量,计数器的值可以通过 CSS 规则递增来跟踪计数器的使用次数,例如可以使用计数器来自动为网页中的标题编号。

简单来说,有序列表就是一个比较简单的计数器,但计数器可以实现编号更为复杂的情况。如下示例代码展示了 CSS 中的计数器的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>计数器示例</title>
  <style>
    #demo ol {
      counter-reset: section;
      list-style-type: none;
    }

    #demo ol li {
      counter-increment: section;
    }

    #demo ol li:before {
      content: counters(section, ".") ". ";
    }
  </style>
</head>

<body>
  <div id="demo">
    <ol>
      <li>进风口的爽肤水
        <ol>
          <li>非进口商的</li>
          <li>非进口商的</li>
          <li>非进口商的</li>
        </ol>
      </li>
      <li>进风口的爽肤水
        <ol>
          <li>非进口商的</li>
          <li>
            非进口商的
            <ol>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
              <li>将咖啡色的开发商</li>
            </ol>
          </li>
          <li>非进口商的</li>
        </ol>
      </li>
      <li>进风口的爽肤水</li>
    </ol>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

355bd7f0fdf8dd6cc58e50dda374ba66.jpeg
03-01.png

提示:上述示例代码仅做展示作用,不需要掌握。有关计数器的内容后续会详细讲解。

如上述示例所示,操作计数器的值是通过如下 2 个属性实现:

  • counter-reset 属性

  • counter-increment 属性

在 HTML 页面中显示计数器是通过如下 2 个函数实现:

  • counter() 函数

  • counters() 函数

counter-reset 属性

CSS counter-reset 属性用来将计数器重置为给定的值。该属性的默认值为 none,其值的类型具有如下 3 种情况:

  • 要重置为计数器的名称。该名称可以是字母(A-Z,a-z)、十进制数字(0-9)、连接符(-)、下划线(_)以及转义字符。

  • 要在元素每次出现时将计数器重置为的值。如果没有指定,默认值为 0。

  • none:不执行计数器复位。

如下示例代码展示了 counter-reset 属性为 none 值的情况:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter-reset属性</title>
  <style>
    #chapters {
      counter-reset: chapter-count;
    }

    h2 {
      counter-increment: chapter-count;
      font-size: 1em;
    }

    h2::before {
      content: "Chapter "counter(chapter-count) ": ";
    }

    #example-element {
      background-color: #add8e6;
      counter-reset: none;
    }
  </style>
</head>

<body>
  <div id="chapters">
    <h2>什么是计数器</h2>
    <h2 id="example-element">coutner-reset属性</h2>
    <h2>counter-increment属性</h2>
    <h2>counter()和counters()函数</h2>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

bfd5ea1f8a545f0b479ac35fc544cd74.jpeg
03-02.png

如上图所示,当 counter-reset 属性的值为 none 值时,计数器没有执行复位,而是继续增加操作。如果将 counter-reset 属性值设置为 chapter-count 的话,会如下图所示:

975c6f74a3224a3d612ad030876eb4c4.jpeg
03-03.png

如上图所示,当 counter-reset 属性值为 chapter-count 时,会将计数器重新复位为 0。这种情况下,与将 counter-reset 属性值为 chapter-count 0 的情况是相同的。

如果将 counter-reset 属性值设置为 chapter-count 5 的话,会如下图所示:

83b2a02b0aff80c0848a3a051f54b8f0.jpeg
03-04.png

如上图所示,当 counter-reset 属性值设置为 chapter-count 5 时,会将计数器重新复位为 5。

注意:counter-reset 属性必须配合 counter() 函数和 counter-increment 属性使用。

计数器的个数不一定是一个,也可以是多个。如果 counter-reset 属性的值是多个计数器的话,则计数器之间使用空格分隔。如下示例代码展示了 counter-reset 属性设置多个计数器:

h1 {
  counter-reset: chapter section 1 page;
}

上述示例代码的含义是:

  • 将 chapter 和 page 两个计数器复位为 0。

  • 将 section 计数器复位为 1。

counter-increment 属性

CSS counter-increment 属性用来设置计数器每次增加的值。该属性的默认值为 none,其值的类型具有如下 3 种情况:

  • 要增加为计数器的名称。该名称可以是字母(A-Z,a-z)、十进制数字(0-9)、连接符(-)、下划线(_)以及转义字符。

  • 要在元素每次出现时将计数器增加为的值。如果没有指定,默认值为 1。

  • none:任何计数器都不能递增。

如下示例代码展示了 counter-increment 属性为 none 值的情况:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter-increment属性</title>
  <style>
    #chapters {
      counter-reset: chapter-count;
    }

    h2 {
      counter-increment: none;
      font-size: 1em;
    }

    h2::before {
      content: "Chapter "counter(chapter-count) ": ";
    }
  </style>
</head>

<body>
  <div id="chapters">
    <h2>什么是计数器</h2>
    <h2 id="example-element">coutner-reset属性</h2>
    <h2>counter-increment属性</h2>
    <h2>counter()和counters()函数</h2>
  </div>
</body>

</html>

上述示例代码运行效果如下图所示:

ca689356764bbd314e67e76b92eee85b.jpeg
03-05.png

如上图所示,当 counter-increment 属性值为 none 值时,计数器没有任何递增。而当 counter-increment 属性值为 chapter-count 时,会如下图所示:

59f946fe74b07b7c1e4b3200112066b5.jpeg
03-06.png

如上图所示,当 counter-increment 属性值为 chapter-count 时,计数器每次递增为 1。与将 counter-increment 属性值设置为 chapter-count 1 是相同的。

如果将 counter-increment 属性值设置为 chapter-count 5 的话,则如下图所示:

0b2fb2f390463a2a60869a3eefe7fbd0.jpeg
03-07.png

如上图所示,当 counter-increment 属性值为 chapter-count 5 时,计数器每次递增为 5。

说明:如果将 counter-increment 属性值设置为 chapter-count -1 则表示递减。

如果 counter-increment 属性设置多个计数器的递增值的话,计数器之间使用空格进行分隔。如下示例代码展示了 counter-increment 属性设置多个计数器:

h1 {
  counter-increment: chapter section 2 page;
}

上述示例代码的含义是:

  • 将 chapter 和 page 两个计数器递增为 1。

  • 将 section 计数器递增为 2。

counter() 函数

CSS counter() 函数用来简单地将计数器的内容显示在 HTML 页面中。counter() 函数返回一个字符串,该字符串表示指定的计数器的当前值。

counter() 函数的语法结构如下所示:

conter(custom-ident, counter-style)

上述语法结构具体说明如下:

  • custom-ident 参数:表示计数器的名称。

  • counter-style 参数:表示显示的样式。

如下示例代码展示了 counter() 函数的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counter()函数</title>
  <style>
    ol {
      counter-reset: listCounter;
    }

    li {
      counter-increment: listCounter;
    }

    li::after {
      content: "["counter(listCounter) "] == ["
        counter(listCounter, upper-roman) "]";
    }
  </style>
</head>

<body>
  <ol>
    <li></li>
    <li></li>
    <li></li>
  </ol>
</body>

</html>

上述示例代码运行效果如下图所示:

9818869906dcaf4806b7f203530309a7.jpeg
03-08.png

counter() 函数经常与 ::before 和 ::after 伪元素选择器配合使用。

counters() 函数

CSS counters() 函数支持计数器的嵌套情况。counters() 函数返回一个字符串,该字符串表示指定的计数器的当前值。

counters() 函数的语法结构如下所示:

conter(custom-ident, string, counter-style)

上述语法结构具体说明如下:

  • custom-ident 参数:表示计数器的名称。

  • string 参数:表示计数器嵌套的分隔符,可以是任意数量的文本字符。

  • counter-style 参数:表示显示的样式。

如下示例代码展示了 counters() 函数的用法:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>counters()函数</title>
  <style>
    ol {
      counter-reset: listCounter;
    }

    li {
      counter-increment: listCounter;
    }

    li::marker {
      content: counters(listCounter, '.', upper-roman) ') ';
    }

    li::before {
      content: counters(listCounter, ".") " == "counters(listCounter, ".", lower-roman);
    }
  </style>
</head>

<body>
  <ol>
    <li>
      <ol>
        <li></li>
        <li></li>
        <li></li>
      </ol>
    </li>
    <li></li>
    <li></li>
    <li>
      <ol>
        <li></li>
        <li>
          <ol>
            <li></li>
            <li></li>
            <li></li>
          </ol>
        </li>
      </ol>
    </li>
  </ol>
</body>

</html>

上述示例代码运行效果如下图所示:

2f7829afea16e77450b5ad33846aaf23.jpeg
03-09.png

总结

本小节主要讲解了有关 CSS 中的计数器的内容,其中包含了 counter-reset 属性、counter-increment 属性、counter() 函数以及 counters() 函数,并且讲解了简单的计数器案例以及带有嵌套的计数器案例等内容。

预告:下一章,我们将讲解表格内容。

如要转载本文,请先加作者微信(2080954535,与 QQ 同号),获得转载许可。原创不易,请尊重作者劳动!

216e4cbf85b9f634863291b44ca86a41.jpeg
作者二维码.png
【100%通过率】华为OD机试真题 Python 实现【最多组合直角三角形个数】【2023 Q1 | 100分】 有N条线段,长度分别为a[1]-a[n]。 现要求你计算这N条线段最多可以组合成几个直角三角形。 每条线段只能使用一次,每个三角形包含三条线段。 阅读详情

相关推荐

洛奇 服务器文件,MabinogiG20S2 [洛奇G20服务端]

Code:Titles:>set_title /id: /add /remove Parameters for titles>set_title /id:60001 /add add devcat title>set_title /id:60001 /remove remove devcat title===========================...

weixin_30813385的博客 4307

打印样式设计

如果你对许多从事网页开发的人提起打印样式,他们第一反映会想到使用打印CSS。当网页文档需要被打印时,我们已经习惯于创建一个打印样式表。这些样式表确保打印版本清晰并且保证用户不会打印出巨幅图像。然而,CSS也被用来排版图书,商品目录以及宣传册 - 这些内容在以前可能从来没有被设计成网页。 在这篇文章里,我们将探索一些已有的CSS模块,它们不是在网页浏览器中使用,而是为了解决打印和分页的问题。我将解...

weixin_33851604的博客 771

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

微生物生态学分析 7639

HTML5与CSS3基础语法自学教程(二十)

本文首发于【前端课湛】微信公众号。可以在微信里搜索【前端课湛】关注,第一时间看文章!导读:本小节主要讲解 HTML 中的列表元素,其中包含了什么是列表元素、有序列表、无序列表以及定义列表...

大叔的私享课 147

基于 Cognex VisionPro 的工业级图像匹配技术全解析

通过本文的深度解析,开发者可以系统掌握 Cognex VisionPro 图像匹配技术的核心原理、开发流程、优化策略及工业级应用。实际项目中,需结合具体场景灵活调整参数,综合运用预处理、特征提取和匹配算法,构建稳定可靠的视觉系统。

品质生活,极致编程。 1594

【β-Boltzmann探索策略】

𝜀是一个介于0和1之间的参数,用于控制探索和利用的比例。当𝜀较大时,智能体更倾向于探索;当𝜀较小时,智能体更倾向于利用已知信息。

m0_59385870的博客 1086

HTML5基础加强css样式篇(css过渡属性的隐式过渡问题)(二十二)

1.隐式过渡属性: 使用火狐浏览器时会出现宽度高度随字体大小一起出现过渡:(原因主要是因为高度和宽度使用了em单位,em随字体大小改变而改变导致) 尚硅谷HTML5 初级阶段 .box { width: 5em; height: 5em; background-color:

余正源的博客 650

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2988

css基础教程【学习笔记】,2024年最新面试阿里巴巴运营自我介绍

元素显示模式就是元素(标签)以什么方式进行显示,比如div自己占一行,比如一行可以放多个span。网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。​ 在 CSS 中,可以根据选择器的类型把选择器分为***基础选择器***和***复合选择器***,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。​ 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,可以更准确、更高效的选择目标元素(标签)后代选择器、子选择器、并集选择器、伪类选择器。

2201_75604580的博客 695

[VisionPro] CogPMAlignTool 工具详解

[VisionPro] [CogPMAlignTool] [模板匹配]

weixin_43163656的博客 1万+

【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】

粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 97

2024年网络安全最新VMware虚拟机win7安装教程_vmware安装windows7 csdn

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

2401_84297796的博客 785

杰理SDK入门教程(六):自定义按键事件

这篇教程介绍了在杰理AC695N芯片上实现自定义按键功能的完整流程,包含三个核心步骤:首先在key_event_deal.h文件中添加按键枚举定义;然后在adkey_table.c配置按键映射表,按模式和行为类型设置按键值;最后在app_common.c的消息处理函数中添加自定义按键逻辑。教程强调需注意不同模式按键表的列定义差异,并提供了具体代码示例,最后指导完成编译测试验证。全文结构清晰,配有关键代码截图,适合开发者快速上手自定义按键功能开发。

qq_42014563的博客 1017

JavaScript学习笔记(二十二)原型及原型链_1小时掌握javascript原型与原型链 qianfeng

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

2401_84302796的博客 758

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【技术专题】HTML5 网页技术 - HTML5 地理定位 API & Web Workers

Java1234_小锋老师推出《一天学会 HTML5 视频教程(无废话版)》,涵盖HTML5核心知识点,包括语义化标签、音频视频、Canvas动画、SVG、Web Storage、File API、拖放与地理定位API,以及关键的Web Workers多线程技术。通过实战示例详解navigator.geolocation获取位置信息及Worker后台执行耗时任务,实现页面流畅交互。配套课件、源码打包下载,助力快速掌握现代Web开发技能。

java1234的博客 215

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【技术专题】CSS3 网页技术 - CSS3 工程化与最佳实践

小锋老师全新推出《一天学会 CSS3 视频教程(无废话版)》,涵盖从基础到工程化实践的完整知识体系。课程内容包括选择器、盒模型、布局、动画、响应式设计及最佳实践,重点讲解 BEM 命名规范、CSS 模块化组织、变量主题切换、性能优化与可访问性。配套提供视频、课件与源码,支持百度网盘下载,助力开发者高效掌握现代 CSS3 核心技能。

java1234的博客 218

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【技术专题】CSS3 网页技术 - CSS3 响应式与移动端适配

小锋老师全新推出《一天学会 CSS3 视频教程(无废话版)》,涵盖从基础到进阶的12大核心模块,重点讲解响应式布局与移动端适配。内容包括媒体查询、移动优先设计、视口单位、rem动态适配、弹性图片/视频、srcset/sizes、clamp()函数及常见兼容问题解决方案。配套视频+课件+源码打包下载,助你高效掌握现代CSS开发技能。

java1234的博客 209

使用HTML+CSS+JavaScript实现文件上传弹窗

使用HTML+CSS+JavaScript实现文件上传弹窗

bjzhang75的博客 247

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 145

Jackson 序列化 / 反序列化注解 完整版笔记

Jackson 序列化 / 反序列化注解 完整版笔记

handsome_sai的博客 283

MCP 协议会成为前端 AI 工程的标准接口吗?

MCP(Model Context Protocol)正在成为连接 AI 模型与外部工具、数据源的一层通用协议。本文从 MCP 的核心机制出发,分析它在浏览器与前端工程中的落地边界,讨论它能否成为前端 AI 工程的标准接口,并给出当下更务实的架构选择建议。

m0_62937412的博客 360

LangGraph 本地 build 频频翻车,最终在服务器跑通流式对话

先说结论:我本地那个,一次都没成功过。三次,三次,全挂在拉镜像上。而顺得像刚上过油。这就很像我高中那辆自行车:骑着能走,一上锁就坏。那天晚上我盯着终端里那行红字看了很久,想的不是技术方案,想的是——为什么同一个工具,可以一边让我觉得自己很行,一边让我觉得自己不太行。

人工智能AI技术 119

海外平台频繁弹验证?从 DNS、WebRTC 到浏览器指纹的环境异常排查清单

在运营多地区海外平台账号时,即使代理节点通畅、TCP 握手成功,仍可能遇到频繁人机验证、地区限制、播放失败等异常。核心结论是:这类问题往往不在网络传输层,而在浏览器环境参数与网络出口之间的逻辑自洽性。本文从 DNS 泄漏、WebRTC 穿透、时区与语言匹配、Canvas/WebGL 指纹、TLS 特征五个维度,给出一份可复现的环境异常排查清单,并对比个人手动配置与工程化环境管理方案的适用边界。适用于跨境运营、多账号运维团队。

P1Browser【p1指纹浏览器】的博客 186

信号链电路怎么选运放?奥特四款信号链运放解析【选型参考】

在模拟电路设计中,运放作为信号链的“第一道门槛”,其微小误差往往决定了整个系统的成败。

naNa_1120的博客 192

智能问诊的流程

本文介绍基于FastAPI构建的医疗多Agent系统MediAgent,通过症状分析、诊断推理与治疗建议等模块协同,实现从问诊到报告生成的完整工作流。系统采用前后端分离架构,结合MySQL、RabbitMQ与Docker实现工程化部署,支持异步化验结果接入。虽当前状态暂存于内存,但已具备可扩展性,未来可通过Redis持久化、消息队列联动及医疗安全机制完善,应用于慢病管理、辅助决策等场景,推动AI在医疗流程中的落地应用。

Joey 的工作空间~ 780

流式输出 SSE:实现 AI 对话打字机效果后端开发

摘要解决传统 HTTP 请求在 LLM 长文本生成时导致的客户端长时间阻塞与 TTFT 极高的问题。适用于需为 AI 应用提供打字机效果、优化交互体验的后端开发工程师。读完可获得基于 FastAPI 与 SSE(Server-Sent Events)技术的流式响应实现代码、协议规范及生产环境避坑指南。关键词SSE、流式输出、FastAPI、打字机效果、TTFT、大模型推理背景与问题大模型(LLM)生成完整回复通常耗时数秒至数十秒,传统请求-响应模型导致用户界面长时间无响应,体验极差。

2402_85729970的博客 184
上一篇: HTML5与CSS3基础语法自学教程(二十一)
下一篇: HTML5与CSS3基础语法自学教程(二十四)
不想成熟的大叔
博客等级 码龄9年 58粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值