CSS中的 5 类常见伪元素详解!

news2025/1/12 1:34:31

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集

285篇原创内容-更多前端系列内容可以go公众.h:云桃桃

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

后台回复“前端电子书”可获取20+本精选电子书

前言

CSS 伪元素用于创建特定的特殊效果,它们可以用于选择和样式化元素的某些部分,这些部分在文档树中并不存在作为可访问的元素节点。

伪元素主要用于添加装饰性的效果,例如添加前缀内容、创建边框效果等。

而前文的伪类CSS伪类大全!4大类伪类详解用于根据特定条件为已有元素添加样式,它们描述了元素的某个状态,如:hover:focus:nth-child()等。

伪元素在 CSS 中使用两个冒号(::)作为前缀,例如:

.my-element::before {
  content: "This is before the element's content";
}

.my-element::after {
  content: "This is after the element's content";
}

ok,那我们一起来看看吧。

5 个常见伪元素

一、 ::before

::before 伪元素用于在元素的内容之前插入内容。可以使用的属性取决于所生成的内容,一般来说可以使用的属性与普通元素一样,它的使用。

.my-element::before {
  content: "「This is before the element's content";
  color: red;
  font-weight: bold;
}

但需要注意:

  • 需要指定 content 属性,否则伪元素不会显示。

  • 伪元素默认为内联元素,可以通过设置 display 属性改变其显示方式。

二、 ::after

::after 伪元素用于在元素的内容之后插入内容。注意事项和 ::before 一样。

.my-element::after {
  content: "This is after the element's content」😆";
  color: red;
  font-weight: bold;
}

::before 和 ::after 伪元素在网页设计中其实玩法超多,比如:

  1. 添加装饰性内容:可以在元素前后添加图标、边框、线条等装饰性元素,增强视觉效果。

  2. 创建三角形等形状:通过透明边框技巧,可以仅使用CSS创建三角形,常用于下拉箭头、提示标签等。

  3. 列表图标:为列表项(<li>)自定义图标或符号,而不是使用浏览器默认的列表样式。

  4. 清除浮动:使用 ::after 伪元素和 clear 属性来清除浮动,避免使用额外的空元素。

  5. 创建渐变效果:在图片上添加渐变遮罩,用于展示图片上的文本或其他装饰。

  6. 模拟按钮开关:通过 ::before 和 ::after 创建类似开关的UI组件,通过状态切换改变样式。

  7. 创建复杂的图形和动画:利用伪元素和CSS3特性,可以创造出星形、心形等复杂的图形,以及相应的动画效果。

  8. 响应式设计:结合媒体查询,动态调整元素样式,实现响应式布局。

  9. 节省HTML标签:通过伪元素添加内容,减少额外的HTML标记,使代码更加简洁。

  10. 实现工具提示(Tooltips):为元素添加工具提示,当用户悬停在元素上时显示额外信息。

  11. 创建自定义的下拉选择框:通过伪元素设计自定义样式的选择框,提高用户界面的美观度。

  12. 实现图片边框和阴影效果:为图片添加自定义边框和阴影,增强图片的展示效果。

  13. 创建加载动画:利用伪元素和CSS动画创建加载时的旋转效果或进度条。

这些场景展示了 ::before 和 ::after 伪元素的灵活性和强大功能,它们可以帮助开发者和设计师在不增加额外HTML结构的情况下,通过CSS创造出丰富的视觉效果。

三、 ::selection

::selection 伪元素用于选择元素的选中文本,并对其进行样式化。可以设置选择文本的样式属性,如背景色、颜色等。

::selection {
  background-color: yellow;
  color: #f00;
}

选中文字以后,效果如下:

图片

需要注意的是:

  • 仅适用于部分浏览器,且不同浏览器对其支持程度有所差异。

  • 不推荐修改文本的可读性,以避免降低用户体验。

四、 ::first-line

::first-line,伪元素用于选择元素的第一行文本,并对其进行样式化,可以设置文本的样式属性,如字体、颜色、背景等。

p::first-line {
  color: red;
  font-weight: bold;
}

注意:只能应用于块级元素,不能应用于表格元素,不包括任何内联元素。

五、 ::first-letter

::first-letter, 伪元素用于选择元素的首字母,并对其进行样式化。可以设置字母的样式属性,如字体、大小、颜色等。

p::first-letter {
  color: red;
  font-size: 20px;
}

注意:只能应用于块级元素和某些其他特定元素,如段落和标题等,字母不能位于其他标记之内。

第一块效果是前2个伪元素,后三个是依次的伪元素效果,如下:

图片

那你可能会说,为什么是双引号呢?这里就得科普一下 CSS 的一些历史了~

双冒号::)是 CSS3 中伪元素的语法。它用于区分伪类(使用单冒号)和伪元素,提高代码的可读性,而单冒号:)是 CSS2 中伪类和伪元素的共同语法。在 CSS3 中,单冒号继续用于伪类,而伪元素则改为使用双冒号。

在 CSS3 出现之前,伪类和伪元素都使用单冒号。但为了更清晰地区分伪类和伪元素,CSS3 推荐使用双冒号来表示伪元素。

但也不是说,必须用双引号,由于向后兼容性的原因,许多浏览器仍然也支持单冒号语法(例如 :before 和 :after)。

OK,本文完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1623940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维自动化-配置平台】如何通过模板创建集群和模块

通过【每天掌握一个功能点】配置平台如何创建业务机拓扑&#xff08;集群-模块&#xff09;我们知道了直接创建集群和模块的操作方法&#xff0c;直接创建的方式适合各集群模块都相对独立的场景&#xff0c;那大量的、标准规范的集群模块如何快速创建呢&#xff0c;这里就引入了…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

Linux安装Docker的多版本PHP和多版本MySQL共存

1: 先安装docker 安装完后执行,权限设置 sudo usermod -aG docker $USER或者sudo usermod -aG docker kentrl#添加当前用户到Docker用户组中 sudo newgrp docker#更新用户组数据,必须执行否则无效 sudo systemctl restart docker 先看目录结构: 2:按照目录结构挂载磁盘,…

ZDOCK linux 下载(无需安装)、配置、使用

ZDOCK 下载 使用 1. 下载1&#xff09;教育邮箱提交申请&#xff0c;会收到下载密码2&#xff09;选择相应的版本3&#xff09;解压 2. 使用方法Step 1&#xff1a;将pdb文件处理为ZDOCK可接受格式Step 2&#xff1a;DockingStep 3&#xff1a;创建所有预测结构 1. 下载 1&…

Java | Leetcode Java题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution {public String multiply(String num1, String num2) {if (num1.equals("0") || num2.equals("0")) {return "0";}int m num1.length(), n num2.length();int[] ansArr new int[m n];for…

python爬虫学习------scrapy第二部分(第三十天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

C# GetField 方法应用实例

目录 关于 C# Type 类 GetField 方法应用 应用举例 心理CT设计题 类设计 DPCT类实现代码 小结 关于 C# Type 类 Type表示类型声明&#xff1a;类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义&#xff0c;以及开放或封闭构造的泛型类型。调用 t…

制造企业看重的OEE,到底是怎么回事?

OEE&#xff08;Overall Equipment Effectiveness&#xff0c;全局设备效率&#xff09;是一个用于评估生产设备性能和效率的指标&#xff0c;它通过综合考虑设备的可用率、性能率和良品率等因素&#xff0c;来评估设备的整体表现和生产效果。 其计算公式为&#xff1a; OEE …

好用的在线客服系统PHP源码(开源代码+终身使用+安装教程) 制作第一步

创建一个在线客服系统是一个涉及多个步骤的过程&#xff0c;包括前端界面设计、后端逻辑处理、数据库设计、用户认证、实时通信等多个方面。以下是使用PHP制作在线客服系统的第一步&#xff1a;需求分析和系统设计。演示&#xff1a;ym.fzapp.top 第一步&#xff1a;需求分析 确…

Oceanbase体验之(二)Oceanbase集群的搭建(社区版4.2.2)

资源规划 3台observer CPU:4C及以上 内存&#xff1a;32G及以上 硬盘操作系统500G 存储盘1T及以上 虚拟机可以直接划分&#xff0c;物理机需要提前规划好资源 一、上传oceanbase安装包 登录ocp选择软件包管理 上传Oceanbase软件包&#xff08;软件包获取路径 官网免费下载社…

双向链表介绍

带头链表⾥的头节点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位节点不存储任何有效元素&#xff0c;只是站在这⾥“放哨的”。哨兵位存在的意义&#xff1a;避免链表出现死循环。 双向链表的结构&#xff1a;数据指向下一个节点的指针指向前一个节点的指针 typedef in…

Postman - 设置变量

场景&#xff1a; 比如你接口都有权限&#xff0c;访问需要每调一个接口都手动放token的值&#xff0c;这个时候就可以搞个全局的变量&#xff0c;只设置一次就可以了 1、设置变量 Environments -> Globals - > 设置key 、value 2、使用变量 {{你得变量名-key}} 3…

[Linux][多线程][四][线程同步][POSIX信号量][环形队列生产者消费者模型][线程池]

目录 1.POSIX信号量1.基本概念2.为什么要有信号量? --> 提高效率3.信号量的PV操作4.PV操作必须是原子操作5.申请信号量失败被挂起等待6.理解信号量大致结构 2.信号量函数1.初始化2.销毁3.等待信号量 -- 申请信号量 --> P()4.发布信号量 -- 释放信号量 --> V() 3.基于…

LeetCode 2739. 总行驶距离

题目链接https://leetcode.cn/problems/total-distance-traveled/?envTypedaily-question&envId2024-04-25 简单题&#xff0c;看代码思考一下即可理解 class Solution {public int distanceTraveled(int mainTank, int additionalTank) {int res 0;while (mainTank >…

探索直播+电商系统中台架构:连接消费者与商品的智能纽带

随着直播电商的崛起&#xff0c;电商行业进入了全新的智能时代。直播形式的互动性和即时性为消费者提供了全新的购物体验&#xff0c;而电商平台则为商品的展示、销售和配送提供了强大的支持。在这一背景下&#xff0c;直播电商系统中台架构成为了连接消费者与商品的智能纽带&a…

模块化 手写实现webpack

模块化 common.js 的导入导出方法&#xff1a; require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别&#xff1a; require属于动态类型&#xff1a;加载执行 同步 esmodul是静态类型&#xff1a;引入时并不会真的去…

Oracle 21 C 安装详细操作手册,并配置客户端连接

Oracle 21 C 安装详细操作手册 Win 11 Oracle 21C 下载&#xff1a; Database Software Downloads | Oracle 中国 云盘共享 链接&#xff1a;https://pan.baidu.com/s/12XCilnFYyLFnSVoU_ShaSA 提取码&#xff1a;nfwc Oracle 21C 配置与登陆&#xff1a; 开始菜单 NetMa…

一线实战,一次底层超融合故障导致的Oracle异常恢复

背景概述 某客户数据由于底层超融合故障导致数据库产生有大量的坏块&#xff0c;最终导致数据库宕机&#xff0c;通过数据抢救&#xff0c;恢复了全部的数据。下面是详细的故障分析诊断过程&#xff0c;以及详细的解决方案描述&#xff1a; 故障现象 数据库宕机之后&#xff0c…

重要!!!涉及huggingface和kaggle的深度学习各种(文本图像视频音频)任务及其对应模型和案例代码总结

可以到hugging face官网&#xff0c;里面有对应的各种学习任务&#xff0c;数据集以及代码和预训练模型也可以到kaggle官网&#xff0c;里面有各种模型以及代码、数据集等。特色优势是&#xff1a;里面对应的数据集和模型都会有超过3个的代码&#xff0c;是用户发布的。 https…

如何批量跟踪京东物流信息

随着电商行业的快速发展&#xff0c;快递业务日益繁忙&#xff0c;无论是商家还是消费者&#xff0c;都需要一种高效、便捷的快递查询工具。快递批量查询高手软件应运而生&#xff0c;以其强大的功能和便捷的操作体验&#xff0c;赢得了广大电商、微商精英们的青睐。 快递批量…