当前位置: 首页 > 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.lryc.cn/news/607458.html

相关文章:

  • 板卡型授时设备的优势总结.北斗pcie对时装置,北斗双模pcie授时板卡,双模pcie授时板卡
  • 二建机电工程专业都考哪些知识点?
  • WordPress 前端显示英文,后台显示中文的设置
  • 前端SWR策略:优化数据请求
  • 电商项目_性能优化_数据同步
  • Altium 移除在原理图之外的元器件
  • Linux权限提升
  • 【CDH × Docker】一次测试部署,N 次复用的环境镜像方案
  • Qt结合ffmpeg实现图片参数调节/明亮度对比度饱和度设置/滤镜的使用
  • 菜鸟教程Shell笔记 数组 运算符 echo命令
  • 一文了解 `package.json` 和 `package-lock.json`文件
  • vscode cursor配置php的debug,docker里面debug
  • 在线免费的AI文本转语音工具TTSMaker介绍
  • 流式编程终端操作
  • 【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?
  • 32. flex 的子元素可以浮动吗
  • 三星固态硬盘PM1643A停产后,PM1653能代替PM1643A吗?有兼容性问题吗?
  • 【PHP】接入百度AI开放平台人脸识别API,实现人脸对比
  • TCP RTO 与丢包检测
  • VS Code 插件开发教程
  • 【高等数学】第七章 微分方程——第六节 高阶线性微分方程
  • 1 前言:什么是 CICD 为什么要学 CICD
  • Fabarta个人专属智能体限时体验中:高效、安全的长文写作新搭档
  • 机器学习——逻辑回归(LogisticRegression)的核心参数:以约会数据集为例
  • 自动化框架pytest
  • linux编译基础知识-编译时路径和运行时路径
  • ModeSeq论文阅读
  • Redis 数据结构全景解析
  • 如何管理数据足迹,实现SAP S/4HANA的无缝迁移
  • 记一次Windwos非常离谱的系统错误,IPF错误,程序构建卡顿,程序启动卡顿。。。