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

31. 伪类和伪元素区别

总结

  1. 选择对象不同
内容说明
伪类作用对象元素的状态或位置
伪元素作用对象元素的一部分内容或虚拟内容
是否新增节点均不新增节点
常用符号:(伪类)、::(伪元素)
推荐场景伪类用于交互与状态控制;伪元素用于样式修饰与内容插入

31. 伪类和伪元素的区别

一、基本定义

类型定义
伪类(Pseudo-class)用于表示元素的某种状态或位置,如链接的点击状态、鼠标悬停、第一个子元素等。
伪元素(Pseudo-element)用于选择元素的某一部分内容或虚拟部分,如首字母、首行、插入内容等。

二、核心区别对比表

对比维度伪类(Pseudo-class)伪元素(Pseudo-element)
表示符号单冒号 :双冒号 ::(部分旧写法也用单冒号)
作用对象元素本身的状态或位置元素的某一部分或虚拟内容
是否新增 DOM 节点❌ 不新增节点❌ 不新增节点(但创建虚拟内容)
是否可交互✅ 可以触发交互(如 :hover:active❌ 不可交互(仅样式控制)
是否可被脚本访问✅ 可以通过 JS 控制❌ 无法通过 JS 控制(非真实 DOM)
常见示例:hover:nth-child():focus::before::after::first-line

三、常见伪类示例

伪类描述
:hover鼠标悬停时的状态
:active元素被激活时(如点击)
:focus元素获得焦点时
:visited已访问的链接
:first-child第一个子元素
:last-child最后一个子元素
:nth-child(n)第 n 个子元素
:not(selector)排除某个选择器匹配的元素
示例:
a:hover {color: red;
}li:nth-child(odd) {background-color: #f0f0f0;
}

四、常见伪元素示例

伪元素描述
::before在元素内容前插入内容
::after在元素内容后插入内容
::first-line选择元素的第一行文本
::first-letter选择元素的第一个字符
::selection选择用户选中的文本部分
::placeholder输入框的占位符文本
示例:
p::first-letter {font-size: 2em;float: left;
}.button::after {content: " ➤";color: blue;
}

五、使用场景对比

场景推荐方式说明
鼠标悬停效果:hover实现按钮、链接的交互效果
列表奇偶行样式:nth-child()表格、列表的视觉优化
插入装饰内容::before / ::after图标、提示、装饰性内容
首字下沉效果::first-letter文章、杂志类页面美化
自定义选中样式::selection提升用户选中文本的视觉体验
表单占位符美化::placeholder统一输入框风格

六、注意事项

注意点说明
::before::after 必须配合 content使用否则不会显示
伪类可以组合使用a:hover::after 是合法的
伪元素不能绑定事件因为不是真实 DOM
双冒号是标准写法用于区分伪类和伪元素(但浏览器兼容旧写法)

http://www.dtcms.com/a/309825.html

相关文章:

  • PyTorch深度学习快速入门学习总结(四)
  • JS-第十九天-事件(一)
  • safari添加主屏及PWA启动方式
  • 玩转ChatGPT:寻找仪器用户手册
  • TEM在量子点发光材料领域的应用-测试GO
  • 汇川ITS7100E触摸屏交互界面开发(一)调试事项说明
  • BIFU币富探索合规新路径 助力用户玩转RWA
  • 两步走解决家庭路由器无法上网
  • Java 根据多个 MM-dd 日期计算总时长(包含当日和次日)
  • python PIL图片转base64字符串
  • [极客大挑战 2019]RCE ME
  • RockAI 的破壁之战:Yan 架构如何啃下“端侧炼丹”硬骨头?
  • Vue3 setup、ref和reactive函数
  • 元策联盈:深耕金融领域,赋能行业发展​
  • 【Flutter3.8x】flutter从入门到实战基础教程(四):自定义实现一个自增的StatefulWidget组件
  • 磁力搜索+磁力下载!无需解释!直接上车!
  • 工作好用小工具积累
  • EGE 流量开关 LG 518 GSP P11237
  • 异步函数被调用多次,多次处理同一个文件导致占用,如何让异步函数按顺序执行?
  • 书生浦语第五期L0G2
  • 【音视频】WebRTC 中的RTP、RTCP、SDP、Candidate
  • Ubuntu-Server-24.04-LTS版本操作系统如何关闭自动更新,并移除不必要的内核
  • C++在类的构造函数中调用另一个构造函数
  • STM32CubeIDE新建项目过程记录备忘(四)EXTI外部中断
  • 网络编程-加密算法
  • Spring Boot 异步执行方式全解析:@Async、CompletableFuture 与 TaskExecutor 对比
  • 面试题:怎么理解 OSI 参考模型(开放式系统互联参考模型) 和 TCP/IP 模型(传输控制协议 / 网际协议模型 )
  • Node.js中Buffer的用法
  • Linux中Docker Swarm介绍和使用
  • 数据结构学习基础和从包装类缓存到泛型擦除的避坑指南