首页 前端知识 【CSS 知识总结】第四篇 - CSS 选择器-伪类和伪元素

【CSS 知识总结】第四篇 - CSS 选择器-伪类和伪元素

2024-05-14 22:05:47 前端知识 前端哥 186 891 我要收藏

一,前言

上一篇,主要介绍了 CSS 的选择器,主要涉及以下几点:

  • CSS 的三大特征;
  • CSS 选择器的优先级;
  • CSS 优先级的计算规则;
  • CSS 选择器的权重;
  • CSS 选择器面试题;

本篇,介绍 CSS 选择器:伪类和伪元素;


二,伪类(伪类选择器)

1,伪类的简介

  • 伪类用于定义元素的特殊状态;
  • 同一元素,根据不同状态,显示不同样式,样式随状态(用户行为)变化而变化;
  • 伪类用冒号表示,如::link:hover
  • 与普通 CSS 类相比较,伪类选择器只有处于 dom 树无法描述的状态下,才能为元素添加样式;所以被称作伪类;

2,伪类的语法

<!-- 语法 -->
selector:pseudo-class {
  property: value;
}

<!-- 示例 -->
a:link {
  color: #FF0000;
}

input:focus {
  background-color: yellow;
}

备注:

  • 伪类名称对大小写不敏感;

3,伪类的应用

  • 设置鼠标悬停在元素上时的样式;
  • 为已访问和未访问链接设置不同的样式;
  • 设置元素获得焦点时的样式;
// 示例:a 标签的四种状态,分别对应 4 种伪类;

/* 未访问的链接 */
a:link {
  color: blue;
}

/* 已访问的链接 */
a:visited {
  color: red;
}

/* 鼠标悬停链接 */
a:hover {
  color: orange;
}

/* 已选择的链接(鼠标点击但不放开时) */
a:active {
  color: #0000FF;
}

注意:

  • a 标签的 4 个伪类(4种状态)必须按照一定顺序书写,否则将会失效:
  • a:hover 必须在 CSS 定义中的 a:linka:visited 之后,才能生效;
  • a:active 必须在 CSS 定义中的 a:hover 之后才能生效;
  • 书写顺序为:a:linka:visiteda:hovera:active
  • 记忆方法:love hate - “爱恨准则”;

4,伪类的意义

  • 通过伪类选择器,能够格式化 DOM 树以外的信息;
  • 通过伪类选择器,能够获取到常规 CSS 选择器无法获取到的信息;

5,全部伪类选择器

选择器示例备注
:activea:active选择活动状态的链接
:checkedinput:checked选择每个被选中的<input>元素
:disabledinput:disabled选择每个被禁用的<input>元素
:enabledinput:enabled选择每个已启用的<input>元素
:emptyp:empty选择没有子元素的每个<p>元素
:first-childp:first-child选择其父中首个子元素的每个<p>
:first-of-typep:first-of-type选择其父中指定类型的首个子元素<p>
:last-childp:last-child选择其父中最后一个子元素的每个<p>元素
:last-of-typep:last-of-type选择作为其父的最后一个<p>元素的每个<p>元素
:focusinput:focus选择获得焦点的<input>元素
:hovera:hover选择处于鼠标悬停状态的链接
:in-rangeinput:in-range选择满足指定范围值的<input>元素
:invalidinput:invalid选择所有无效值的<input>元素
:langp:lang(it)选择每个lang 属性值以 “it” 开头的<p>元素
:linka:link选择所有未被访问的链接
:not(*selector*):not(p)选择每个非<p>元素的元素
:nth-child(*n*)p:nth-child(2)选择作为其父的第二个子元素的每个 <p>元素
:nth-last-child(*n*)p:nth-last-child(2)选择作为父的第二个子元素的每个<p>元素
从最后一个子元素计数
:nth-last-of-type(*n*)p:nth-last-of-type(2)选择作为父的第二个<p>元素的每个<p>元素
从最后一个子元素计数
:nth-of-type(*n*)p:nth-of-type(2)选择作为其父的第二个<p>元素的每个<p>元素
:only-of-typep:only-of-type选择作为其父的唯一<p>元素的每个 <p>元素
:only-childp:only-child选择作为其父的唯一子元素的<p>元素
:optionalinput:optional选择不带 “required” 属性的 <input>元素
:out-of-rangeinput:out-of-range选择值在指定范围之外的<input>元素
:read-onlyinput:read-only选择指定了readonly属性的<input>元素
:read-writeinput:read-write选择不带readonly属性的<input>元素
:requiredinput:required选择指定了required属性的<input>元素
:rootroot选择元素的根元素
:target#news:target选择当前活动的#news元素(单击包含该锚名称的 URL)
:validinput:valid选择所有具有有效值的<input> 元素
:visiteda:visited选择所有已访问的链接

三,伪元素(伪元素选择器)

1,伪元素的简介

  • CSS 伪元素用于设置元素指定部分的样式;
  • 伪元素使用双冒号表示法,如:::first-line

备注:
W3C 为了区分伪类和伪元素,CSS3 的伪元素使用双冒号表示法取代了单冒号表示法;但是,为了能够向后兼容,CSS2 和 CSS1 的伪元素仍可使用单冒号语法;

2,伪元素的语法

<!-- 语法 -->
selector::pseudo-element {
  property: value;
}

<!-- 示例 -->
p::first-line {
  color: #ff0000;
}

h1::before {
  content: '♥';
}

3,伪元素的应用

注意:

  • ::first-line 伪元素只能应用于块级元素
  • ::first-letter 伪元素只适用于块级元素

todo:后续需要补充伪元素下可以生效的属性有哪些;

4,伪元素的意义

用于创建不在文档树中的元素,并为其添加样式;

  • 可以通过:before在元素前增加文本,并为文本添加样式;
  • 用户虽然可以看到文本内容,但文本实际并不在文档树中;

伪元素可以创建文档语言无法创建的虚拟元素;

  • 文档语言无法描述元素内容的第一个字母或第一行,但伪元素可以(::first-letter::first-line);
  • 伪元素还可以创建源文档不存在的内容;比如:使用 ::before::after

5,全部伪元素选择器

选择器示例备注
::first-letterp::first-letter选择<p>元素的首字母;
::first-linep::first-line选择<p>元素的首行;
::beforep::before<p>元素之前插入内容;
必须定义content属性;
::afterp::after<p>元素之后插入内容;
必须定义content属性;
::selectionp::selection设置被用户选择时的样式;
只能定义被选择时的color
background-color

四,伪类和伪元素选择器的区别

  • 伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档数外的元素。因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素;
  • 伪类本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息;
  • 伪元素本质上是创建了一个有内容的虚拟容器;
  • CSS3 中伪类和伪元素的语法不同;
  • 在 CSS3 中,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示;
  • 可以同时使用多个伪类,而只能同时使用一个伪元素;

五,结尾

本篇,介绍了 CSS 选择器伪类和伪元素,主要涉及以下几个点:

  • 伪类选择器;
  • 伪元素选择器;
  • 伪类和伪元素选择器的区别;

下一篇,介绍 CSS 变量 var;


维护记录

  • 20211126
    • 调整了“伪类(伪类选择器)部分,扩充了内容;
    • 调整了“伪元素(伪元素选择器)”部分,扩充了内容;
    • 调整了目录结构、结尾部分、文章摘要;
转载请注明出处或者链接地址:https://www.qianduange.cn//article/8623.html
标签
评论
发布的文章

1、SpringBoot简介及返回json

2024-05-25 09:05:17

mysql 的jsonTable使用

2024-05-25 09:05:41

MySQL中的JSON

2024-05-25 09:05:32

JSON简介(1)

2024-05-25 09:05:22

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!