Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >重新认识伪类和伪元素

重新认识伪类和伪元素

作者头像
ihoey
发布于 2018-10-31 08:18:30
发布于 2018-10-31 08:18:30
1K00
代码可运行
举报
文章被收录于专栏:梦魇小栈梦魇小栈
运行总次数:0
代码可运行

熟悉前端的人都会听过css的伪类与伪元素,然而大多数的人都会将这两者混淆(包括我)。那今天就让我们来看看伪类和伪元素的区别吧!

伪类与伪元素

先说一说为什么css要引入伪元素和伪类,以下是css2.1 Selectors章节中对伪类与伪元素的描述:

CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on information that lies outside the document tree.

  • 直译过来就是:css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或者是列表中的第一个元素。下面分别对伪类和伪元素进行解释:
    • 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。
    • 伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

伪类

  • 伪类前面是一个冒号,E:first-child 伪类,会对现有的元素进行筛选
    • :link
    • :visited
    • :hover
    • :active
    • :focus
    • :not()
    • :first-child
    • :last-child
    • :nth-child
    • :nth-last-child 从后面计数
    • :only-child 只满足一个子元素
    • :target 当URL带有锚名称,指向文档内某个具体的元素时,:target匹配该元素。
    • :checked 被选中的input元素
    • :empty 匹配没有子元素的元素
    • :valid 匹配条件验证正确的表单元素。

伪元素

  • 伪元素前面是两个冒号,E::first-line 伪元素。会创造出不存在的新元素,由于 css 对单冒号的伪元素也支持,所以这样很容易让新学者混淆。但实际上现在 css3 已经明确规定了伪类单冒号,伪元素双冒号的规则。
    • ::before/:before 在被选元素前插入内容
    • ::after/:after 在被元素后插入内容,其用法和特性与:before相似。
    • ::first-letter/:first-letter 匹配元素中文本的首字母。被修饰的首字母不在文档树中
    • ::first-line/:first-line 匹配元素中第一行的文本。这个伪元素只能用在块元素中,不能用在内联元素中。
    • ::selection 匹配用户被用户选中或者处于高亮状态的部分。在火狐浏览器使用时需要添加-moz前缀。该伪元素只支持双冒号的形式。
    • ::placeholder 匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效。
  • 该伪元素不是CSS的标准,它的实现可能在将来会有所改变,所以要决定使用时必须谨慎。 在一些浏览器中(IE10Firefox18及其以下版本)会使用单冒号的形式。
  • 对于伪元素 :before:after 而言,属性 content 是必须设置的,我们知道属性的值可以为字符串,也可以有其它形式,比如指向一张图片的 URL:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
content: url('img/icon.png')
  • 配合伪类使用
    • 伪元素 :before 还可以配合伪类使用,这里举经常与 :before 配合使用的伪类 :hover 为例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.before:hover:before{content:'you before'; color:red;}
<div class="before"> me</div>
  • 配合取值函数 attr() 使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a::before{content: attr(title)}
<a href="https://blog.ihoey.com" title="梦魇小栈"></a>

效果
<a href="https://blog.ihoey.com" title="梦魇小栈">梦魇小栈</a>

总结

  • 伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。
  • 伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-282,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
总结伪类和伪元素(转)
先说一说为什么css要引入伪元素和伪类,以下是css2.1 Selectors章节中对伪类与伪元素的描述:
山河木马
2019/03/05
1.5K0
总结伪类和伪元素(转)
【 前端相关 网页样式 】总结CSS3中“伪类”与“伪元素”
熟悉前端的人都会听过css的伪类与伪元素,然而大多数的人都会将这两者混淆。本文从解析伪类与伪元素的含义出发,区分这两者的区别,并且列出大部分伪类与伪元素的具体用法,即使你有用过伪类与伪元素,但里面总有一两个你没见过的吧。 1.伪类与伪元素 先说一说为什么css要引入伪元素和伪类,以下是css2.1 Selectors章节中对伪类与伪元素的描述: CSS introduces the concepts of pseudo-elements and pseudo-classes to permit format
QUXINGDONG.COM
2018/04/17
3.5K0
【 前端相关 网页样式 】总结CSS3中“伪类”与“伪元素”
CSS中伪类与伪元素,你弄懂了吗?
熟悉前端的人都会听过css的伪类与伪元素,然而大多数的人都会将这两者混淆。本文从解析伪类与伪元素的含义出发,区分这两者的区别,即使你有用过伪类与伪元素,但里面总有一两个你没见过的吧。
Javanx
2019/09/05
1.3K0
CSS中伪类与伪元素,你弄懂了吗?
css篇-面试题6-伪类与伪元素的区别
伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。
itclanCoder
2020/10/28
1.6K0
css篇-面试题6-伪类与伪元素的区别
我可能学到了“假”的CSS:伪类伪元素
==在*-child系列伪类中,索引是相对于所有同级兄弟元素计算的,而非特定类型==
江米小枣
2020/06/15
1.5K0
CSS-伪类和伪元素
背景 写了这么多年代码,对CSS中的伪类和伪元素竟然没有细致的进行过学习总结,由此可见在实际代码开发中,用的也确实不多,也就用过一些:first-child,:hover之类的吧,其它的连before什么的都没用过,于是迫切需要大于伪元素与伪类进行一个系统整体的学习。 伪类和伪元素 伪类:是以一个冒号作为前缀,被添加到选择器的末尾,当你希望在特定状态下(:hover)才被呈现到指定元素时,可以往元素的选择器后面加上伪类。 伪元素:用于创建一些不在文档树中的元素,并为其添加样式。比如::befor
六个周
2022/10/28
1.1K0
CSS 伪元素基本用法
CSS 中可以利用伪元素给 DOM 元素添加特殊的样式。比如说,我们可以通过 :before 在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。
李振
2021/11/26
8400
CSS3伪类和伪元素的特性和区别
前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link、visited等,伪元素较常见的比如:before、:after等。 其实上面提到的这些伪类和伪元素都是CSS1和CSS2中的概念,CSS1和CSS2中对伪类的伪元素的区别比较模糊,甚至经常有同行将:before、:after称为伪类。CSS3对这两个概念做了相对较清晰地概念,并且在语法上也很明显的讲二者区别开。 伪类 - pseudo classes 首先看看CSS2中对伪类的定义: CS
寒月十八
2018/01/30
1.1K0
CSS3伪类和伪元素的特性和区别
css中的伪类与伪元素
伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。 伪类的种类 伪元素的种类 区别 这里用伪类 :fir
前朝楚水
2018/04/02
2.5K0
css中的伪类与伪元素
30s告诉你【伪类】与【伪元素】的区别
CSS2 中伪类、伪元素都是以单冒号:表示,CSS2.1 后规定伪类用单冒号表示,伪元素用双冒号::表示,浏览器同样接受 CSS2 时代已经存在的伪元素(:before, :after, :first-line, :first-letter 等)的单冒号写法。对于 CSS2 之后所有新增的伪元素(如::selection),应该采用双冒号的写法。但是因为兼容性问题,大部分还是用的单冒号。
泯泷、
2024/03/17
1200
CSS进阶-CSS选择器高级:伪类与伪元素
在CSS的探索之旅中,伪类和伪元素无疑为我们的样式设计增添了无限可能。它们不仅能够帮助我们精确地定位文档中的元素,还能实现丰富的交互反馈和视觉效果。本文旨在深入浅出地探讨CSS伪类与伪元素的核心概念、常见问题、易错点及其规避策略,并通过实例代码加深理解。
Jimaks
2024/06/14
1650
CSS进阶-CSS选择器高级:伪类与伪元素
CSS中的伪类和伪元素
伪类连同伪元素一起,他们允许你不仅仅是根据文档 DOM 树中的内容对元素应用样式,而且还允许你根据诸如像导航历史这样的外部因素来应用样式(例如 :visited),同样的,可以根据内容的状态(例如在一些表单元素上的 :checked),或者鼠标的位置(例如 :hover 让你知道是否鼠标在一个元素上悬浮)来应用样式。
刘亦枫
2020/03/19
2.8K0
CSS中的伪类和伪元素
Pseudo elements伪元素与Pseudo classes伪类
::after用于描述处于css渲染层的一个伪元素,相当于选中元素的最后一个子元素,但这个元素与DOM节点无关,位于选择的元素之后,伪元素的内容用content属性描述。
gojam
2019/05/14
8690
这些 CSS 伪类,你可能还不知道,可以用起来了!
css 伪类是用于向某些选择器添加特殊的效果,是动态的,指当前元素所处的状态或者特性。只有一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。
前端小智@大迁世界
2020/06/04
1.3K0
这些 CSS 伪类,你可能还不知道,可以用起来了!
重温前端-css篇
q:请将html模块中ul列表的第2个li标签和第4个li标签的背景颜色设置成”rgb(255, 0, 0)”。
kif
2023/03/10
8400
解析CSS伪类和伪元素的常见用法和实例
CSS伪类和伪元素是一种特殊类型的选择器,可以用于在元素状态或者文档树中的特定位置添加样式。它们允许开发者选择一个元素的部分或者元素的部分状态,从而改变它们的样式。下面将介绍一些常见的伪类和伪元素的用法和实例。
老K博客
2023/12/25
2070
CSS快速入门(二)
伪类是选择器的一种,它用于选择处于特定状态的元素,比如当它们是这一类型的第一个元素时,或者是当鼠标指针悬浮在元素上面的时候。它们表现得会像是你向你的文档的某个部分应用了一个类一样,帮你在你的标记文本中减少多余的类,让你的代码更灵活、更易于维护;
HammerZe
2022/03/24
4810
CSS快速入门(二)
详解css中伪元素::before和::after和创意用法
本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究!
十里青山
2022/11/16
3.5K0
详解css中伪元素::before和::after和创意用法
CSS3选择器介绍及用法总结[通俗易懂]
CSS3新增了很多强大的选择器 它可以让我们少写一些js事件脚本 我们先来看看各个版本的选择器有哪些 注: ele代表element元素 attr代表attribute属性,val代表value属性值 :xxx都属于伪类选择器,::xxx都属于伪元素选择器 有名字的选择器我尽量细分了 #CCS1选择器#
全栈程序员站长
2022/09/14
1.5K0
CSS3选择器介绍及用法总结[通俗易懂]
Web前端,认识css,css规格,伪类和伪元素的用法,代码详解!
认识 CSS — Cascading Style Sheets CSS的世界是神奇的。随着浏览器WEB标准的日趋统一,CSS在WEB世界中的扮演的角色也越来越重要。 我们从HTML开始,因为CSS的用途就是为了给HTML标记添样式,所以我们要先知道怎么去写HTML标签 什么是CSS HTML标记内容是为了给网页赋予纯粹的语义。换而言之就是为了让用户可以去理解里边的含义。每一个标签都是对所包含的内容的一种诠释,描述。所以请记住HTML 就是 文本+标记的一个文档结构(请不要参杂CSS)。当我们给内容都打上
企鹅号小编
2018/02/06
1.3K0
Web前端,认识css,css规格,伪类和伪元素的用法,代码详解!
相关推荐
总结伪类和伪元素(转)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文