🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 第 13 章 CSS 选择器[上] 学习要点: 1.选择器总汇 2.基本选择器 3.复合选择器 4.伪元素选择器 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 选择器,通过选择器定位到想要设置样式的元素。目前 CSS 选择器的版本已经升级至第三代,即 CSS3 选择器。CSS3 选择器提供了更多、更丰富的选择器方式,主要分为三大类。 **一.选择器总汇** 本节课主要涉及到三种选择器:基本选择器、复合选择器和伪元素选择器,具体如下: | **选择器** | **名称** | **说明** | **CSS 版本** | | --- | --- | | * | 通用选择器 | 选择所有元素 | 2 | | &lt;type&gt; | 元素选择器 | 选择指定类型的元素 | 1 | | #&lt;id&gt; | id 选择器 | 选择指定 id 属性的元素 | 1 | | .&lt;class&gt; | class 选择器 | 选择指定 class 属性的元素 | 1 | | [attr]系列 | 属性选择器 | 选择指定 attr 属性的元素 | 2 ~ 3 | | s1,s2,s3... | 分组选择器 | 选择多个选择器的元素 | 1 | | s1 s2 | 后代选择器 | 选择指定选择器的后代元素 | 1 | | s1 &gt; s2 | 子选择器 | 选择指定选择器的子元素 | 2 | | s1 + s2 | 相邻兄弟选择器 | 选择指定选择器相邻的元素 | 2 | | s1 ~ s2 | 普通兄弟选择器 | 选择指定选择器后面的元素 | 3 | | ::first-line | 伪元素选择器 | 选择块级元素文本的首行 | 1 | | ::first-letter | 伪元素选择器 | 选择块级元素文本的首字母 | 1 | | ::before | 伪元素选择器 | 选择元素之前插入内容 | 2 | | ::after | 伪元素选择器 | 选择元素之后插入内容 | 2 | **二.基本选择器** 使用简单且频率高的一些选择器归类为基本选择器。 **1.****通用选择器** ``` * { border: 1px solid red; } ``` 解释:“*”号选择器是通用选择器,功能是匹配所有 html 元素的选择器包括&lt;html&gt;和&lt;body&gt;标签。可以使用如下元素标记测试效果: ``` <p>段落</p> &lt;b&gt;加粗&lt;/b&gt; &lt;span&gt;无&lt;/span&gt; ``` 通用选择器会将所有元素匹配并配置样式,这是把双刃剑,好处就是非常方便,坏处就是将不必要的元素也配置了。目前为止,还不存在所有元素都必须配置的样式,所以,一般来说,不常用。 **2.****元素选择器** ``` p { color: red; } ``` ``` <p>段落</p> ``` 解释:直接使用元素名称作为选择器名即可。 **3.ID** **选择器** ``` #abc { font-size: 20px; } ``` ``` <p id="abc">段落</p> ``` 解释:通过对元素设置全局属性 id,然后使用#id 值来选择页面唯一元素。 **4.****类选择器** ``` .abc { border: 1px solid red; } ``` ``` <b class="abc">加粗</b> &lt;span class="abc"&gt;无&lt;/span&gt; ``` 解释:通过对元素设置全局属性 class,然后使用.class 值选择页面一个或多个元素。 ``` b.abc { border: 1px solid red; } ``` 解释:也可以使用“元素.class 值”的形式,限定某种类型的元素。 ``` <span class="abc edf">无</span> ``` 解释:类选择器还可以调用多个样式,中间用空格隔开进行层叠。 **5.****属性选择器** //所需 CSS2 版本  ``` [href] { color: orange; } ``` 解释:属性选择器,直接通过两个中括号里面包含属性名即可。当然,还有更多扩展的属性选择器。 //所需 CSS2 版本  ``` [type="password"] { border: 1px solid red; } ``` 解释:匹配属性值的属性选择器。 //所需版本 CSS3 ``` [href^="http"] { color: orange; } ``` 解释:属性值开头匹配的属性选择器。 //所需版本 CSS3 ``` [href$=".com"] { color: orange; } ``` 解释:属性值结尾匹配的属性选择器。 //所需版本 CSS3 ``` [href*="baidu"] { color: orange; } ``` 解释:属性值包含指定字符的属性选择器。 //所需版本 CSS2 ``` [class~="edf"] { font-size: 50px; } ``` 解释:属性值具有多个值时,匹配其中一个值的属性选择器。 //所需版本 CSS2 ``` [lang|="en"] { color: red; } ``` 解释:属性值具有多个值且使用“-”号连接符分割的其中一个值的属性选择器。比如 ``` <i lang="en-us">HTML5</i> ``` **二.复合选择器** 将不同的选择器进行组合形成新的特定匹配,我们称为复合选择器。 **1.****分组选择器** ``` p,b,i,span { color: red; } ``` 解释:将多个选择器通过逗号分割,同时设置一组样式。当然,不但可以分组元素选择器,还可以使用 ID 选择器、类选择器、属性选择器混合使用。 **2.****后代选择器** ``` p b { color: red; } ``` 解释:选择&lt;p&gt;元素内部所有&lt;b&gt;元素。不在乎&lt;b&gt;的层次深度。当然,后代选择器也可以混合使用 ID 选择器、类选择器、属性选择器。 **3.****子选择器** ``` ul > li { border: 1px solid red; } ``` ``` <ul> <li> 我是儿子 <ol> <li> 我是孙子 </li> <li> 我是孙子 </li> </ol> </li> <li> 我是儿子 </li> <li> 我是儿子 </li> </ul> ``` 解释:子选择器类似与后代选择器,而最大的区别就是子选择器只能选择父元素向下一级的元素,不可以再往下选择。 **4.****相邻兄弟选择器** ``` p + b { color: red; } ``` 解释:相邻兄弟选择器匹配和第一个元素相邻的第二个元素。 **5.****普通兄弟选择器** ``` p ~ b { color: red; } ``` 解释:普通兄弟选择器匹配和第一个元素后面的所有元素。 **三.伪元素选择器** 伪选择器分为两种第一种是下节伪类选择器,还有一种就是伪元素选择器。这两种选择器特性上比较容易混淆,在 CSS3 中为了区分,伪元素前置两个冒号(::),伪类前置一个冒号(:)。 **1.::first-line** **块级首行** ``` ::first-line { color: red; } ``` 解释:块级元素比如&lt;p&gt;、&lt;div&gt;等的首行文本被选定。如果想限定某种元素,可以加上前置 p::first-line。 **2.::first-letter** **块级首字母** ``` ::first-letter { color: red; } ``` 解释:块级元素的首行字母。 **3.::before** **文本前插入** ``` a::before { content: '点击-'; } ``` 解释:在文本前插入内容。 **4.::after** **文本后插入** ``` a::before { content: '-请进'; } ``` 解释:在文本后插入内容。