1.基本选择器
1.1 通配选择器
作用:可以选中所有的 HTML 元素。
语法:
备注:清除样式时,会对我们有很大帮助
1.2元素选择器
作用:为页面中某种元素统一设置样式。
语法:
1 2 3 4
| h1 { color: red; font-size: 40px; }
|
1.3 类选择器
作用:根据元素的 class 值,来选中某些元素。
1 2 3
| .button_choose{ color:red; }
|
注:
一个元素的 class 属性,能写多个值,要用空格隔开,例如:
1
| <h1 class="speak big">你好</h1>
|
1.4 ID选择器
作用:根据元素的 id 值,来选中某个元素。
1 2 3
| #button_choose{ color:red; }
|
注:
一个元素的 class 属性,能写多个值,要用空格隔开,例如:
1
| <h1 class="speak big">你好</h1>
|
注:
1、id 属性值:尽量由字母、数字、下划线( _ )、短杠( - )组成,最好以字母开头、不要包含空
格、区分大小写。
2、一个元素只能拥有一个 id 属性,多个元素的 id 属性值不能相同。
3、一个元素可以同时拥有 id 和 class 属性。
2.复合选择器
2.1交集选择器
交集选择器中不可能出现两个元素选择器,因为一个元素,不可能即是 p 元素又是 span 元
素
用的最多的交集选择器是:元素选择器配合类名选择器,例如: p.beauty 。
1 2 3 4 5 6 7 8
| p.beauty { color: blue; }
.rich.beauty { color: green; }
|
2.2 并集选择器
1 2 3 4 5 6 7 8
| #peiqi, .rich, .beauty { font-size: 40px; background-color: skyblue; width: 200px; }
|
2.3 后代选择器
子、孙子、重孙子、重重孙子 …… 统称后代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ul li { color: red; }
ul li a { color: orange; }
.subject li { color: blue; }
.subject li.front-end { color: blue; }
|
2.4 子代选择器
选择器之间,用 > 隔开, > 可以理解为:” xxx 的子代”,其实就是儿子的意思。
只选儿子
1 2 3 4 5 6 7 8
| div>a { color: red; }
.persons>a{ color: red; }
|
2.5 兄弟选择器
2.5.1相邻兄弟选择器
作用:选中指定元素后,符合条件的相邻兄弟元素。
所谓相邻,就是紧挨着他的下一个,简记:睡在我下铺的兄弟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <html> <style> div+p { color:red; } </style> <body> <div>test</div> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </body> </html>
|
使用场景:
想让23都变为红色
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <html> <style> li+li { color:red; } </style> <body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </body> </html>
|
2.5.2通用兄弟选择器
作用:选中指定元素后,符合条件的所有兄弟元素。(简记:睡在我下铺的所有兄弟)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <html> <style> div~p { color:red; } </style> <body> <div>test</div> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </body> </html>
|
注意:两种兄弟选择器,选择的是下面的兄弟。
2.6 属性选择器
作用:选中属性值符合一定要求的元素。
语法:
- [属性名] 选中具有某个属性的元素。
- [属性名=”值”] 选中包含某个属性,且属性值等于指定值的元素。
- [属性名^=”值”] 选中包含某个属性,且属性值以指定的值开头的元素。
- [属性名$=”值”] 选中包含某个属性,且属性值以指定的值结尾的元素。
- [属性名 *=“值”] 选择包含某个属性,属性值包含指定值的元素
1 2 3 4 5 6 7 8 9 10 11
| /* 选中具有title属性的元素 */ div[title]{color:red;} /* 选中title属性值为atguigu的元素 */ div[title="atguigu"]{color:red;} /* 选中title属性值以a开头的元素 */ div[title^="a"]{color:red;} /* 选中title属性值以u结尾的元素 */ div[title$="u"]{color:red;} /* 选中title属性值包含g的元素 */ div[title*="g"]{color:red;}
|
2.7 伪类选择器
作用:选中特殊状态的元素。
2.7.1动态伪类
1. :link 超链接未被访问的状态。
2. :visited 超链接访问过的状态。
3.:hover 鼠标悬停在元素上的状态。
4.:active 元素激活的状态。
激活:按下鼠标不松开。
注意点:遵循 LVHA 的顺序,即: link 、 visited 、 hover 、 active 。
5.:focus 获取焦点的元素。
表单类元素才能使用 :focus 伪类。
当用户点击元素、触摸元素、或通过键盘的 “ tab ” 键等方式,选择元素时,就是获得焦点。
2.7.2 结构伪类
1.常用的
- :first-child 所有兄弟元素中的第一个。
- :last-child 所有兄弟元素中的最后一个。
- :nth-child(n) 所有兄弟元素中的第 n 个。
- :first-of-type 所有同类型兄弟元素中的第一个。
- :last-of-type 所有同类型兄弟元素中的最后一个。
- :nth-of-type(n) 所有同类型兄弟元素中的 第n个 。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>09_伪类选择器_结构伪类_1</title> <style>
p:first-child { color: red; } </style> </head> <body>
<p>测试1</p> <div> <p>测试2</p> <marquee> <p>测试3</p> <p>张三:98分</p> </marquee> <p>李四:88分</p> <p>王五:78分</p> <p>赵六:68分</p> </div> </body> </html>
|
注:关于 n 的值:
- 0 或 不写 :什么都选不中 —— 几乎不用。
- n :选中所有子元素 —— 几乎不用。
- 1~正无穷的整数 :选中对应序号的子元素。
- 2n 或 even :选中序号为偶数的子元素。
- 2n+1 或 odd :选中序号为奇数的子元素。
- -n+3 :选中的是前 3 个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>10_伪类选择器_结构伪类_2</title> <style>
</style> </head> <body>
</body> </html>
|
了解:
- :nth-last-child(n) 所有兄弟元素中的倒数第 n 个。
- :nth-last-of-type(n) 所有同类型兄弟元素中的 倒数第n个 。
- :only-child 选择没有兄弟的元素(独生子女)。
- :only-of-type 选择没有同类型兄弟的元素。
- :root 根元素。
- :empty 内容为空元素(空格也算内容)。
2.7.3 否定伪类
:not(选择器) 排除满足括号中条件的元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>12_伪类选择器_否定伪类</title> <style>
div>p:not(:first-child) { color: red; } </style> </head> <body> <div> <p>张三:98分</p> <p>李四:88分</p> <p>王五:78分</p> <p>赵六:68分</p> <p class="fail" title="你要加油啊!孙七">孙七:58分</p> <p class="fail" title="你要加油啊!老八">老八:48分</p> </div> </body> </html>
|
2.7.4 UI伪类
:checked 被选中的复选框或单选按钮。
:enable 可用的表单元素(没有 disabled 属性)
:disabled 不可用的表单元素(有 disabled 属性)。
2.7.3 目标伪类
:target 选中锚点指向的元素
2.7.4 语言伪类
:lang() 根据指定的语言选择元素(本质是看 lang 属性的值)。
2.8 伪元素选择器
作用:选中元素中的一些特殊位置。
常用伪元素:
::first-letter 选中元素中的第一个文字。
::first-line 选中元素中的第一行文字。
::selection 选中被鼠标选中的内容。
::placeholder 选中输入框的提示文字。
::before 在元素最开始的位置,创建一个子元素(必须用 content 属性指定内容)。
::after 在元素最后的位置,创建一个子元素(必须用 content 属性指定内容)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>16_伪元素选择器</title> <style>
div::first-letter { color: red; font-size: 40px; } div::first-line { background-color: yellow; } div::selection { background-color: green; color: orange; } input::placeholder { color: skyblue; } p::before { content:"¥"; } p::after { content:".00" } </style> </head> <body> <div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt quibusdam amet eligendi velit dolore sequi, exercitationem consequatur, quis maiores tempore accusantium ipsum aspernatur iusto fugiat fuga natus est placeat. Accusamus maiores culpa et sunt dolorum incidunt. Ducimus in odio tempora minima provident deleniti, ex voluptatem facere, molestias unde exercitationem pariatur rem vero ut quidem quaerat aliquam, nam debitis perspiciatis. Facere?</div> <br> <input type="text" placeholder="请输入您的用户名"> <p>199</p> <p>299</p> <p>399</p> <p>499</p> </body> </html>
|
3.选择器优先级
行内样式 > ID选择器 > 类选择器 > 元素选择器 > 通配选择器。
详细描述:
计算方式:每个选择器,都可计算出一组权重,格式为: (a,b,c)
a : ID 选择器的个数。
b : 类、伪类、属性 选择器的个数。
c : 元素、伪元素 选择器的个数。

比较规则:按照从左到右的顺序,依次比较大小,当前位胜出后,后面的不再对比,例如:
(1,0,0) > (0,2,2)
(1,1,0) > (1,0,3)
(1,1,3) > (1,1,2)
特殊规则:
- 行内样式权重大于所有选择器。
- !important 的权重,大于行内样式,大于所有选择器,权重最高!