CSS 选择器
CSS 选择器
Pupper一、 CSS 语法 及 注释
1. 语法
CSS规则有两个主要部分,一个 选择器 和 一个或多个 声明:
选择器:指定CSS规则适用于HTML页面中的哪个元素。
声明:决定了元素在网页上的格式。
每个声明都包含一个属性和一个值,这些值和值之间用冒号(
:
)分隔并以分号(;
)结尾,并且声明组用花括号括起来{}
。
注意:
虽然CSS属性名称和许多属性值都不区分大小写。但是CSS选择器是区分大小写,例如:.maincontent
与.mainContent
是两个不同的class类选择器,是区分大小写的。
2. 注释
CSS注释以开头/*
,以结束*/
1 | /* 这是一段注释 */ |
二、 基础 选择器
选择器是CSS最重要的方面之一,因为它们用于选择网页上的元素,以便可以设置样式。
1,基本选择器语法
选择器 | 类型 | 功能描述 |
---|---|---|
* | 通配选择器 | 选择文档中所有HTML元素 |
E | 元素选择器 | 选择指定类型的HTML元素 |
#id | ID选择器 | 选择指定ID属性值为“id”的任意类型元素 |
.class | 类选择器 | 选择指定class属性值为“class”的任意类型的任意多个元素 |
selector1,selectorN | 群组选择器 | 将每一个选择器匹配的元素集合 |
2,层次选择器语法
选择器 | 类型 | 功能描述 |
---|---|---|
E F | 后代选择器(包含选择器) | 选择匹配的F元素,且匹配的F元素被包含在匹配的E元素内 |
E>F | 子选择器 | 选择匹配的F元素,且匹配的F元素所匹配的E元素的子元素 |
E+F | 相邻兄弟选择器 | 选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面 |
E~F | 通用选择器 | 选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素 |
3,动态伪类选择器语法
选择器 | 类型 | 功能描述 |
---|---|---|
E:link | 链接伪类选择器 | 选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上 |
E:visited | 链接伪类选择器 | 选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上 |
E:active | 用户行为选择器 | 选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上 |
E:hover | 用户行为选择器 | 选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover |
E:focus | 用户行为选择器 | 选择匹配的E元素,而且匹配元素获取焦点 |
4,目标伪类选择器
选择器 | 功能描述 |
---|---|
E:target | 选择匹配E的所有元素,且匹配元素被相关URL指向 |
5,UI元素状态伪类选择器语法
选择器 | 类型 | 功能描述 |
---|---|---|
E:checked | 选中状态伪类选择器 | 匹配选中的复选按钮或者单选按钮表单元素 |
E:enabled | 启用状态伪类选择器 | 匹配所有启用的表单元素 |
E:disabled | 不可用状态伪类选择器 | 匹配所有禁用的表单元素 |
6,结构伪类选择器使用语法
选择器 | 功能描述 |
---|---|
E:first-child | 作为父元素的第一个子元素的元素E。与E:nth-child(1)等同 |
E:last-child | 作为父元素的最后一个子元素的元素E。与E:nth-last-child(1)等同 |
E:root | 选择匹配元素E所在文档的根元素。在HTML文档中,根元素始终是html,此时该选择器与html类型选择器匹配的内容相同 |
E F:nth-child(n) | 选择父元素E的第n个子元素F。其中n可以是整数(1,2,3)、关键字(even,odd)、可以是公式(2n+1),而且n值起始值为1,而不是0. |
E F:nth-last-child(n) | 选择父元素E的倒数第n个子元素F。此选择器与E:nth-child(n)选择器计算顺序刚好相反,但使用方法都是一样的,其中:nth-last-child(1)始终匹配最后一个元素,与last-child等同 |
E:nth-of-type(n) | 选择父元素内具有指定类型的第n个E元素 |
E:nth-last-of-type(n) | 选择父元素内具有指定类型的倒数第n个E元素 |
E:first-of-type | 选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同 |
E:last-of-type | 选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同 |
E:only-child | 选择父元素只包含一个子元素,且该子元素匹配E元素 |
E:only-of-type | 选择父元素只包含一个同类型子元素,且该子元素匹配E元素 |
E:empty | 选择没有子元素的元素,而且该元素也不包含任何文本节点 |
注:(1),“ul>li:nth-child(3)”表达的并不是一定选择列表ul元素中的第3个子元素li,仅有列表ul中第3个li元素前不存在其他的元素,命题才有意义,否则不会改变列表第3个li元素的样式。
(2),:nth-child(n) 中参数只能是n,不可以用其他字母代替。
(3),:nth-child(odd) 选择的是奇数项,而使用:nth-last-child(odd) 选择的却是偶数项
7,否定伪类选择器
选择器 | 功能描述 |
---|---|
E:not(F) | 匹配所有除元素F外的E元素 |
8,属性选择器语法
选择器 | 功能描述 | |
---|---|---|
[attribute] | 用于选取带有指定属性的元素。 | |
[attribute=value] | 用于选取带有指定属性和值的元素。 | |
[attribute~=value] | 用于选取属性值中包含指定词汇的元素。 | |
[attribute\ | =value] | 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。 |
[attribute^=value] | 匹配属性值以指定值开头的每个元素。 | |
[attribute$=value] | 匹配属性值以指定值结尾的每个元素。 | |
[attribute**=value*] | 匹配属性值中包含指定值的每个元素。 |
1. 标签选择器
标签选择器:即以 HTML 标签 作为 CSS 修饰所用的选择器。
1 | h3 { |
2. class 类 选择器 .
class 选择器用于描述一组元素的样式,可以在多个元素中使用。
class 选择器在 HTML 中以 class 属性表示, 在 CSS 中,类选择器以一个点”
.
“号显示。
可以对所有 拥有该类名 的标签使用
1 | .center {text-align:center;} |
也可以对特定 拥有该类名 的标签使用
1 | p.center {text-align:center;} |
多类名 选择器
可以把一些 HTML 标签 相同的样式 放到同一个类中
HTML 标签中,多个类名之间需要用 空格 隔开
1 | <head> |
3. id 选择器 #
id 选择器: 可以为标有特定 id 的 HTML 标签指定特定的样式。
HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以
#
来定义。以 id 作为选择器时,只能被 调用一次,不能多次调用
1 | #para1 { |
id 选择器和 类 选择器的区别
- 被调用次数不同
- 类选择器可以被多次调用(类似 人名)
- id 选择器只能被调用一次(类似 身份证)
- 表达方式不同
- 类 选择器用 “
.
” 英文 句号 表示 - id 选择器用 “
#
” 表示
- 类 选择器用 “
- 使用场景不同
- 类 选择器 可用于所有 标签
- id 选择器 主要和 JavaScript 搭配使用
4. 通配符 选择器 *
通用选择器(用
*
星号或星号表示)与页面上的每个单个元素匹配。选择器通常用于 从元素中 删除 默认的 边距和填充,以进行快速测试。
*
选择器内的样式规则将应用于文档中的每个元素。
1 | * { |
三、 复合 选择器
1. 后代选择器 空格
当需要选择一个元素是另一个元素的后代时,可以使用这些选择器
语法:
1 | 元素1 元素2 {样式} |
注意:
- 元素1 为父标签,元素2 为子标签,元素2 为目标标签
- 元素1 和 元素2 之间要用 空格 隔开
1 | ul.menu li a { |
代码说明:
ul.menu li a
: 表示 类名为 menu 的无序列表中的 li 标签 中包含的 a 标签h1 em
: 表示 h1 标签中 包含的 em 标签
2. 子选择器 >
子选择器: 只能用于选择作为某些元素的直接子元素,即距离父元素 最近 的子元素
语法:
1 | 元素1 > 元素2 {样式} |
注意:
- 元素1 为父标签,元素2 为距离最近的子标签,元素2 为目标标签
- 元素1 和 元素2 之间要用
>
隔开
1 | ul > li { |
3. 兄弟 选择器 +
相邻的同级选择器可用于选择同级元素
该选择器的语法类似于:E1 + E2,其中 E2 是选择器的目标。
目标标签只有一个
1 | h1 + p { |
代码说明:
h1 + p
: 标签 p 为目标标签, p 和 h1 标签在同一个父标签下,并且相邻ul.task + p
: 标签 p 为目标标签,无序列表 ul 和 p 标签在同一个父标签下,并且 ul 标签有类名 task,和 p 标签相邻
4. 通用 兄弟 选择器 ~
通用的同级选择器由两个简单的选择器组成,这些选择器由波浪号(
∼
)字符分隔。E1〜E2,其中E2是选择器的目标。
目标标签有很多个
1 | h1 ∼ p { |
代码说明:
h1 ~ p
:目标标签为 h1 标签后的所有 同一 父 标签下的 p 标签ul.task ∼ p
: 目标标签是 类名为task 的 ul 标签 之后 和 它在 同一 父 标签下 的 p 标签
5. 并集 选择器 ,
样式表中的多个选择器通常共享相同的样式规则声明
您可以将它们分组为一个逗号分隔的列表,以最大程度地减少样式表中的代码
分组前:
1 | h1 { |
分组后:
1 | h1, h2, h3 {font-weight: normal;} |
6. 伪类选择器 :
伪类选择器: 用于向某些选择器添加特殊效果,如:给链接添加效果
语法:
选择器 | 类型 | 功能描述 |
---|---|---|
E:link | 链接伪类选择器 | 选择所有未被访问过的超链接。常用于链接描点上 |
E:visited | 链接伪类选择器 | 选择所有已被访问过的超链接。常用于链接描点上 |
E:hover | 用户行为选择器 | 选择鼠标指针位于其上的连接 |
E:active | 用户行为选择器 | 选择活动链接(鼠标按下未弹起的链接) |
E:focus | 用户行为选择器 | 选择获取焦点(光标)的表单元素 |
1. 连接伪类
1 | /* 没有被访问过的链接 */ |
2. 用户操作伪类
1 | /* 鼠标在其上方的链接 */ |
3. 表单伪类
1 | input:focus { |
注意:
- 为了保证生效,按照 LVHA 的顺序声明: link 、visited、 hover 、active
- 给连接指定样式时,需要单独指定
实际开发中写法:
1 | /* 给所有连接特点的样式 */ |