Day12 CSS选择器(上)
一.选择器总汇
选择器 | 名称 | 说明 | CSS 版本 |
* | 通用选择器 | 选择所有元素 | 2 |
<type> | 元素选择器 | 选择指定类型的元素 | 1 |
#<id> | id 选择器 | 选择指定id 属性的元素 | 1 |
.<class> | class 选择器 | 选择指定class 属性的元素 | 1 |
[attr]系列 | 属性选择器 | 选择指定attr 属性的元素 | 2 ~ 3 |
s1,s2,s3... | 分组选择器 | 选择多个选择器的元素 | 1 |
s1 s2 | 后代选择器 | 选择指定选择器的后代元素 | 1 |
s1 > s2 | 子选择器 | 选择指定选择器的子元素 | 2 |
s1 + s2 | 相邻兄弟选择器 | 选择指定选择器相邻的元素 | 2 |
s1 ~ s2 | 普通兄弟选择器 | 选择指定选择器后面的元素 | 3 |
::first-line | 伪元素选择器 | 选择块级元素文本的首行 | 1 |
::first-letter | 伪元素选择器 | 选择块级元素文本的首字母 | 1 |
::before | 伪元素选择器 | 选择元素之前插入内容 | 2 |
::after | 伪元素选择器 | 选择元素之后插入内容 | 2 |
二.基本选择器
使用简单且频率高的一些选择器归类为基本选择器。
1.通用选择器
* {
border: 1px solid red;
}
解释:“*”号选择器是通用选择器,功能是匹配所有 html 元素的选择器包括<html>
和<body>标签。可以使用如下元素标记测试效果:
<p>段落</p>
<b>加粗</b>
<span>无</span>
通用选择器会将所有元素匹配并配置样式,这是把双刃剑,好处就是非常方便,坏处就
是将不必要的元素也配置了。目前为止,还不存在所有元素都必须配置的样式,所以,一般
来说,不常用。
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>
<span class="abc">无</span>
解释:通过对元素设置全局属性 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;
}
解释:选择<p>元素内部所有<b>元素。不在乎<b>的层次深度。当然,后代选择器也可
以混合使用 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;
}
解释:块级元素比如<p>、<div>等的首行文本被选定。如果想限定某种元素,可以加
上前置 p::first-line。
2.::first-letter 块级首字母
::first-letter {
color: red;
}
解释:块级元素的首行字母。
3.::before 文本前插入
a::before {
content: '点击-';
}
解释:在文本前插入内容。
4.::after 文本后插入
a::before {
content: '-请进';
}
解释:在文本后插入内容。
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;
}
解释:选择<p>元素内部所有<b>元素。不在乎<b>的层次深度。当然,后代选择器也可
以混合使用 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;
}
解释:块级元素比如<p>、<div>等的首行文本被选定。如果想限定某种元素,可以加
上前置 p::first-line。
2.::first-letter 块级首字母
::first-letter {
color: red;
}
解释:块级元素的首行字母。
3.::before 文本前插入
a::before {
content: '点击-';
}
解释:在文本前插入内容。
4.::after 文本后插入
a::before {
content: '-请进';
}
解释:在文本后插入内容。