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

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 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.mzph.cn/diannao/3367.shtml

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

相关文章

使用python setup.py报错:Upload failed (403) / Upload failed (400)

当前报错的环境 Python 3.9.19twine1.15.0 本地~/.pypirc已正确配置了用户名和密码&#xff0c;用在pypi.org注册&#xff1a; [pypi]username skylerhupassword ${password}执行 python setup.py sdist upload -r pypi 打包上传到仓库报错。 在不久之前同样的环境&#…

2018-2023年上市公司富时罗素ESG评分数据

2018-2023年上市公司富时罗素ESG评分数据 1、时间&#xff1a;2018-2023年 2、来源&#xff1a;整理自WIND 3、指标&#xff1a;证券代码、简称、ESG评分 4、范围&#xff1a;上市公司 5、指标解释&#xff1a; 富时罗素将公司绿色收入的界定和计算作为公司ESG 评级打分结…

macbook m1 nacos集群启动失败报错的解决办法

问题来源&#xff1a;(黑马springcloud学习过程)P29-06-Nacos配置管理-nacos集群搭建 问题描述&#xff1a;详情见nacos.log和start.out WebServerException: Unable to start embedded Tomcat (mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘a…

记录如何用php将敏感文字内容替换为星号的方法

在PHP中&#xff0c;将敏感文字用星号替换通常涉及到字符串的搜索和替换操作。你可以使用PHP的内置函数str_replace()来实现这个功能。下面是一个基本的示例&#xff0c;展示如何将特定的敏感词替换为星号&#xff1a; <?php // 要检查的原始文本 $text "这个文本包…

什么是DTU和串口服务器的区别

在工业物联网的快速发展中&#xff0c;数据传输单元&#xff08;DTU&#xff09;和串口服务器作为两种关键设备&#xff0c;各自扮演着重要的角色。对于传统行业来说&#xff0c;了解它们的基本概念和区别&#xff0c;有助于更好地选择和应用这些技术&#xff0c;提升生产效率和…

重发布的原理及其应用

重发布的作用&#xff1a; 在一个网络中&#xff0c;若运行多种路由协议或者相同协议的不同进程&#xff1b;因为协议之间不能直接沟通计算&#xff0c;进程之间也是独立进行转发和运算的&#xff0c;所以&#xff0c;需要使用重发布来实现路由的共享。 条件 &#xff1a; 1&am…

js 模拟鼠标移动事件,并监听鼠标移动

代码实现 function simulateClick( x, y) {// 获取目标元素 const element document.querySelector("xxxxx"); // 创建一个鼠标移动事件 var mouseMoveEvent new MouseEvent(mousemove, {screenX: x window.screenX, screenY: y window.screenY, clientX: x,…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境&#xff1a; Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景&#xff0c;使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为&#xff1a;带有 Rigidbody 的Circle Collider 2D 就会出现异…

Linux网络—DNS域名解析服务

目录 一、BIND域名服务基础 1、DNS系统的作用及类型 DNS系统的作用 DNS系统类型 DNS域名解析工作原理&#xff1a; DNS域名解析查询方式&#xff1a; 2、BIND服务 二、使用BIND构建域名服务器 1、构建主、从域名服务器 1&#xff09;主服务器配置&#xff1a; 2&…

找不到vcruntime140_1.dll,无法继续执行代码的多种解决方法

在启动电脑并着手进行日常工作的过程中&#xff0c;当我尝试运行一款至关重要的软件时&#xff0c;系统突然弹出一个令人困扰的错误提示&#xff1a;“由于找不到vcruntime140_1.dll&#xff0c;无法继续执行代码”&#xff0c;这个错误信息明确指出&#xff0c;由于缺失了vcru…

人大金仓(KingbaseES V9)的Python环境的配置和基本使用

人大金仓(KingbaseES V9)提供了Python的驱动,可以通过Python来访问人大金仓数据库,不过这个配置并不算十分友好。 要使用这个Python驱动,除了要根据架构来下载对应的版本之外,还需要从KingbaseES的部署中拷贝一些lib文件出来。为了简化这些操作,我写一个脚本对自动化整…

【SAP ME 26】SAP ME创建开发组件(DC)mobile

目录 1、说明 2、创建开发组件(DC) 3、相关性 4、公共部分 5、构建

按照模板导出复杂样式的excel

导出excel通常使用的是apache poi,但是poi的api相当复杂&#xff0c;所以当导出的excel样式比较复杂时&#xff0c;写起来就比较头疼了&#xff0c;这里推荐使用easypoi, 可以很方便的根据模板来导出复杂excel 文档地址: 1.1 介绍 - Powered by MinDoc 我们要实现如图所示效果…

MySQL无法远程连接方案解决(示例)

应老表要求写一个MySQL无法远端访问的解决方案&#xff0c;不要问我怎么知 道&#xff0c;因为Oracle厂长是我表弟。。。 按照下面的步骤&#xff0c;一步一步执行一遍即可&#xff1a; -- 第一步&#xff1a;登录好 mysql -u root -p -- 第二步&#xff1a;更改host为全匹…

Gateway基础知识

文章目录 Spring Cloud GateWay 用法核心概念请求流程两种配置方式设置日志&#xff08;建议设置&#xff09;路由的各种断言断言The After Route Predicate FactoryThe Before Route Predicate FactoryThe Between Route Predicate FactoryThe Cookie Route Predicate Factory…

【第21章】spring-aot

文章目录 前言一、GraalVM1. 介绍2. 特点3. 安装4. 环境变量5. 验证6. native-image 二、安装C编译环境(VS)1.安装 三、编译及构建1. 测试类2. 编译3. 构建4. 执行 总结 前言 spring-aot&#xff08;Ahead-Of-Time&#xff09;是Spring框架中提供的一个新特性&#xff0c;用于…

【QEMU系统分析之启动篇(十五)】

系列文章目录 第十五章 QEMU系统仿真的导出虚拟机分析 文章目录 系列文章目录第十五章 QEMU系统仿真的导出虚拟机分析 前言一、QEMU是什么&#xff1f;二、QEMU系统仿真的启动分析1.系统仿真的初始化代码2.主循环数据初始化3. module_load_qom_all()module_check_arch()module…

十进制正负整数的二进制有几个1

这个问题的答案和这个十进制数的类型有关&#xff08;int、long、byte…&#xff09;。还有要清楚负数的二进制是补码。 我第一个想到的就是树状数组的lowbit int lowbit(int x) { return x & -x; }// lowbit(4)4 lowbit(6)2 int main() {int n;cin >> n;int res…

描述Java中的备忘录模式。

备忘录模式&#xff08;Memento Pattern&#xff09;是软件工程中的一种设计模式&#xff0c;属于行为型模式。它主要用于在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便之后可以将对象恢复到原先保存的状态…

面试二十二、跳表SkipLists

跳表全称为跳跃列表&#xff0c;它允许快速查询&#xff0c;插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表&#xff0c;且每一层链表中的元素是前一层链表元素的子集&#xff08;见右边的示意图&…