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 评级打分结…

什么是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…

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

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

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;用于…

面试二十二、跳表SkipLists

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

嵌入式UBoot如何跳转Kernel—uboot与linux交界分析

不知道你是否有这种感觉,就是学习了Uboot,学习了kernel,学习了安卓。但是有时候总感觉是各自孤立的,将三者连续不起来? • 不知道你是否在做启动方案的时候,在宏观上知道了整个启动链路流程,但是却在汪洋的代码中迷了路? 那么这篇文章必定对你有点用处。 如果没有,那请…

javabean技术四种方法

1.form表单 index页面 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!-- jsp页面输入三角形三条边&#xff0c;输出周长和面积 --><!-- 实例化对象bean的名字可以随便取名&#xff0…

Nginx基本使用 反向代理与负载均衡

什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。 其特点是占有内存少&#xff0c;并发能力强&#xff0c;nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;而且几乎可以做到7*24不间断运行&#xff0c;即使运行数个月也不需要重新启动。 …

MP2110A Anritsu 安立 采样示波器 眼图设备 简述

MP2110A是一款集成了误码率测试仪&#xff08;BERT&#xff09;和采样示波器的一体化测量仪器&#xff0c;主要用于光学模块的误码率&#xff08;BER&#xff09;测量、眼图分析等评估操作。它支持从10G到800G的光学模块制造过程中的检测分91522。MP2110A内置4通道采样示波器&a…

k8s部署jupyterlab,jupyterlab保存不了文件,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

ElasticSearch:查询操作合集

先看下我的数据&#xff1a; 1、查询所有文档&#xff1a; GET /cartest/_search或者 GET /cartest/_search {"query": {"match_all": {}} }2、匹配查询&#xff1a; match匹配类型查询&#xff0c;会把查询条件进行分词&#xff0c;然后进行查询&…

【树莓派】如何用电脑连接树莓派的远程桌面,灰屏解决

要使用VNC桌面连接到树莓派&#xff0c;你需要确保已经安装并启动了VNC服务器。以下是连接到树莓派的步骤&#xff1a; 在树莓派上启动VNC服务器&#xff1a; 打开终端或SSH连接到你的树莓派。输入以下命令以安装RealVNC的VNC服务器&#xff1a;sudo apt update sudo apt insta…

PLSQL数据库

目录 什么是PLSQL数据库 PL数据库的实现方法 PL数据库的基本语法 1.作用 2.语法 3.赋值输出 4.引用 5.异常处理 6.if 判断 7.loop循环 8.while循环 9.for循环 10.游标 11.参数游标 12.索引 13.分区表 什么是PLSQL数据库 PL/SQL&#xff08;Procedure Language/…