CSS 选择器
选择器,用于筛选需要设置样式的 HTML 元素。
一、简单选择器
1.通用选择器
(1) 定义
用 *
匹配任何类型的元素,为所有元素设置统一的样式。
(2) 示例
1 |
|
2.元素选择器
(1) 定义
用元素类型名称匹配元素,为所有同类元素设置样式。
(2) 示例
1 |
|
3.类选择器
(1) 定义
用类名来匹配元素,为所有类名匹配的元素设置样式。
(2) 示例
1 |
|
4.id 选择器
(1) 定义
用 id 来匹配元素,为该元素设置样式。id 应该是唯一的。
(2) 示例
1 |
|
二、组合器选择器
1.交集选择器
(1) 定义
交集,即既属于 A 又属于 B 的集合。
例如,
元素为 p 且 class 为 text :
1
2
3
p.text {
}
(2) 语法
1 |
|
2.并集选择器
(1) 定义
并集,即属于 A 或属于 B 的集合。将多个选择器选择出的元素一起设为统一样式。
(2) 语法
1 |
|
3.后代选择器
(1) 定义
选用选择器 1 进行筛选,筛选完后再在结果中用选择器 2 筛选,··· ,继续往下筛选,直到所有选择器都选择完成。
(2) 语法
1 |
|
4.子元素选择器
(1) 定义
与后代选择器相比,每一次筛选中在上一轮筛选的直接子元素中进行筛选。
筛儿子不筛孙子
(2) 语法
1 |
|
5.相邻兄弟选择器
(1) 定义
选择紧随选择器 1 筛选出的元素之后,与它们同级,且能被选择器 2 所筛选的元素。
示例:
筛选器为
h1 + p {}
,若
1
2
<h1>一级标题</h1>
<p>测试文本</p>则测试文本会被应用样式。
若
1
2
3
<h1>一级标题</h1>
<h2>测试文本</h2>
<p>测试文本</p>则此筛选器什么都没筛选出来,不会有任何元素被应用样式。
(2) 语法
1 |
|
6.通用兄弟选择器
(1) 定义
与相邻兄弟选择器相比,同样要求在选择器 1 所选元素之后的同级元素中筛选,但不再要求相邻。
(2) 语法
1 |
|
三、伪元素选择器
1. ::first-line
(1) 定义
用于向文本的首行添加特殊样式。
仅能作用于块级元素,对行内元素无效。
(2) 语法
1 |
|
2. ::first-letter
(1) 定义
用于向文本的首字母添加特殊样式。
仅能作用于块级元素,对行内元素无效。
(2) 语法
1 |
|
3. ::before
(1) 定义
用于在元素之前插入内容,使用 content 属性来指定要插入的内容。
(2) 语法
1 |
|
4. ::after
(1) 定义
用于在元素之后插入内容,使用 content 属性来指定要插入的内容。
(2) 语法
1 |
|
5. ::selection
(1) 定义
用于设置元素被用户(这里的用户指浏览网页的用户)选中或处于高亮状态时的样式。
(2) 语法
1 |
|
四、伪类选择器
1.什么是伪类?
伪类用来定义元素的特殊状态。
例如:
- 设置鼠标悬停在元素上时的样式
- 为已访问和未访问链接设置不同的样式
- 设置元素获得焦点时的样式
2.伪类选择器的类别
(1) 动态伪类选择器
(2) UI 伪类选择器
(3) 结构伪类选择器
3.伪元素和伪类的区别
(1) 伪元素
伪元素用于创建一些不在文档树中的元素,为其添加样式。
避免增设子元素,就能选中元素的某一部分。
(2) 伪类
用于当已有元素处于某个状态时,为其添加样式。
避免增设类,就能选中某一类元素。
五、动态伪类选择器
示例:为链接设置样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 未访问的链接 */
a:link {
color: #FF0000;
}
/* 已访问的链接 */
a:visited {
color: #00FF00;
}
/* 鼠标悬停链接 */
a:hover {
color: #FF00FF;
}
/* 已选择的链接 */
a:active {
color: #0000FF;
}
1. :link
为未访问的链接设置样式。
2. :visited
为已访问的链接设置样式。
3. :hover
为鼠标指针浮动在上面的元素设置样式。
注意:
:haver
可用于所有元素,不只是链接。
4. :active
为元素被按下的那一刻设置样式。
注意:
:active
可用于所有元素,不只是链接。
5. :focus
为获得焦点的 input 元素设置样式。
六、UI伪类选择器
1. :enabled 和 :disabled
(1) 定义
设置表单元素在可用和禁用时的样式。
(2) 示例
1 |
|
2. :checked
设置选项在被选中时的样式。
适用于单选框、多选框和下拉列表中的选项
3. :required 和 :optional
设置表单元素中必填项和可填项的样式。
指定了 required 即为必填项,未指定则为可填项。
适用于:input, select 和 textarea。
4. :default
设置默认被选中的选项的样式。
适用于按钮、被设为 checked 的单选或多选选项
5. :valid 和 :invalid
当输入的数据合法和非法时,显示的样式。
6. :in-range 和 :out-of-range
当输入的数据在范围内或在范围之外时,显示的样式。
需要通过 min 和 max 指定数据大小区间
7. :read-only 和 :read-write
为只读的输入框和可读可写的输入框指定样式。
注意:如果使用 Firefox 浏览器,需要在样式前面添加前缀 -moz-
8. :indeterminate
用于设置状态不确定的表单元素的样式。
checkbook(多选) 未做选中时, indeterminate 属性为 true ;
radio(单选) 当同名属性都未被选中时, indeterminate 为 true 。
七、结构伪类选择器
1. :root
匹配文档根元素,在 HTML 中,根元素始终是 <html>
。
2. :empty
匹配未定义任何内容的元素。
3. :first-child 和 :last-child
(1) 定义
用于匹配属于同一个父元素的第一个或最后一个元素。
匹配要求:
- 该元素是其父元素的子元素中第一个或最后一个
- 该元素的类型需要与要求匹配
(2) 语法
1 |
|
4. :first-of-type 和 :last-of-type
用于匹配属于同一个父元素的第一个或最后一个指定类型元素。
与
:first-child 和 :last-child
相比,不再要求元素必须排第一个,只需要在指定类型中排第一个即可。可以视为将其它类型的元素忽略,只在指定元素类型中筛选。
4. :only-child
一个元素,当它的父元素仅有唯一一个元素,且它的元素类型与要求匹配时,它被选中。
5. :only-of-type
一个元素,当它是他的父元素下唯一一个指定类型的元素,它被选中。
不再要求其父元素下仅有一个子元素,需要同类元素只有一个即可。
可以视为将其它类型的元素忽略,只在指定元素类型中筛选。
6. 带参数的结构伪类选择器
(1) :nth-child(n)
匹配属于同一个父元素的第 n 个元素。
(2) :nth-last-child(n)
匹配属于同一个父元素的倒数第 n 个元素。
(3) :nth-of-type(n)
匹配属于同一个父元素的第 n 个指定类型元素。
(4) :nth-last-of-type(n)
匹配属于同一个父元素的倒数第 n 个指定类型元素。
7. :target
为页面内锚点设置样式。
页面内锚点主要是为了实现页面内部跳转。需要先为要跳转的元素设置好 id,然后将 a 元素的 href 指定为 “#该元素的 id 值” ,就可以实现点击后页面内跳转。
8. :lang
(1) 定义
用于为指定语言的元素设置样式。
(2) 示例
1 |
|
9. :not
(1) 定义
匹配所有不被指定选择器选中的元素。
(2) 语法
1 |
|
八、属性选择器
1. [属性名]
(1) 定义
匹配包含指定属性的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|
2. [属性名=属性值]
(1) 定义
匹配包含指定属性,且属性值与给定字符串相等的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|
3. [属性名^=属性值]
(1) 定义
匹配包含指定属性,且属性值以指定字符串开头的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|
4. [属性名$=属性值]
(1) 定义
匹配包含指定属性,且属性值以指定字符串结尾的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|
5. [属性名*=属性值]
(1) 定义
匹配包含指定属性,且指定字符串是其属性值的子字符串的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|
6. [属性名~=属性值]
(1) 定义
匹配包含指定属性,且属性值中包含指定字符串的元素。
字符串-abc
不行;
字符串 abc
可以。
(2) 语法
1 |
|
(3) 示例
1 |
|
7. [属性名|=属性值]
(1) 定义
匹配包含指定属性,且属性值由字符进行分割,其中第一个字符串是指定字符串的元素。
(2) 语法
1 |
|
(3) 示例
1 |
|