1.1. ID选择器
ID选择器使用 "#" 号加ID名称xx来表示,用来选择HTML 中的id="xxx"的DOM元素
<div id="page">我是id选择器</div>
当我们想给这个元素应用样式时候
#page{
color:#fff;
background:#000;
}
1.2. 类选择器
类选择器我们是用 “.” 加上claa名称来表示,用来选择HTML中的class="xx"的DOM元素。
<li class="list-item">1</li>
<li class="list-item">2</li>
<li class="list-item">3</li>
把样式加到每一条元素,使用类选择器
.list-item{
color:red;
font-size:16px
}
1.3. 通配符选择器
通配符选择器使用 * 来选择页面里面的所有元素
*{
margin:0;
padding:0;
}
由于通配符选择器要把样式覆盖到所有的元素上,因此它的效率不会高。
1.4. 标签选择器
标签选择器就是选中HTML中某一种类的标签,直接使用HTML中的标签名作为肖泽强的名称
li{
font-size:20px;
}
Tips 标签选择器通常用来重置某些标签的样式,标签选择器的效率也不是很高
1.5. 属性选择器
属性选择器通过DOM的属性来选择DOM节点,属性选择器用括号"[]"包裹,如下
a[href]{
color:red;
}
属性选择器有如下几种形式
-
[attr] 用来选择带有attr属性的元素
-
[attr=xxx] 用来选择attr属性等于xxx的元素,如选择文本输入框
<input type="text" value="xuanze"/>>
//css
input[type=text]{
color:red;
}
这个选择器要注意,xxx和HTML中的属性值必须完全相等才会生效
<input class="input text" type="text" value="xuanze"/>>
//css
input[class="input text"]{
color:red;
}
- [attr~=xxx] 这个选择器中间用了~=,选择属性值包含xx
<input class="input text" type="text" value="xuanze"/>>
//css
input[class~=input]{
color:red;
}
- [attr|xxx] 这个选择器是用来选择为xxx或者xxx- 开头的元素,使用如下
<div class="article">1</div>
<div class="article-tile">2</div>
<div class="article-content">3</div>
<div class="article_footer">4</div>
div[class|=article]{
color:red
}
上面会有article开头的生效,但对第四条不会生效
- [attr^=xxx],这个选择器会匹配xxx开头,实际就是用正则去匹配属性值,只要是xxx开头就行
如果把选择器改成 div[class^=artice] 那么都会选中了
-
[attr$=xxx] 这个选择器用正则匹配属性以XXX结尾的元素
-
[attr*=xxx] 这个选择器用正则匹配的方法来选择属性值中包含XXX字符的所有元素。
2. 组合选择器
2.1. 后代选择器
后代选择器是用空格分隔多个选择器组合,它的作用是在A选择器的后代中找到B选择器所指的元素,如:
<div class="page">
<div class="acr">
<p>我是随便写的</p>
</div>
<p>我也是随便写的</p>
</div>
.page p {
color: gold;
font-size: 20px;
}
2.2. 子元素选择器
子元素选择器和后代选择器类似,不过子元素只找子元素,不会把所有的后代都找一遍
.page >p{
color:red
}
2.3. 相邻兄弟选择器
相邻兄弟选择器是用来选取某个元素紧邻的兄弟元素,它的语法是"选择器A + 选择器B"
h1+p{
margin-top:20px;
color:black;
}
2.4. 通用兄弟选择器
通用兄弟选择器和相邻兄弟选择器很相似,它的语法是"选择器A ~ 选择器B",会匹配选择器A后面所有符合选择器B的元素
H1~P{
color:red
}
2.5. 交集选择器
交集选择器是为了找两个或多个选择器的交集,用法就是把两个选择器放在一起,法语"选择器A选择器B"
.list-item.active{
color:red;
font-size:20px
}
2.6. 并集选择器
并集选择器是为了合并类型的样式,可以是选择器不用单样式相同的CSS语法块合并。并集选择器就是用多个逗号分隔多个选择器,如"选择器A,选择器B"
H1,H2,P{
margin:0;
padding:0;
}
3. 伪类和伪元素选择器
3.1. 标记状态的伪类
-
:link 选取未访问过的超链接
-
:visited 选取访问过的连接
-
:hover 选取鼠标悬浮的元素
-
:active 选取点中的元素
-
:focus 选取获取焦点的元素
3.2. 筛选功能的伪类
-
:empty 选取没有子元素的元素
-
:checked 选取勾选状态下的input 元素 只对 radio 和checkbox 有效
-
:disabled 选取禁用的表单元素
-
:first-child 选取当前选择器下的第一个元素
-
:last-child 选取当前选择器下的最后一个元素
-
:nth-child(an+b) 选取指定位置的元素,参数支持an+b的形势.比如 li:nth(2n+1),就可以选取li元素序号是2的整数倍+1的所有元素,也就是1,3,5,7,9序号的li元素
-
:nth-last-child(an+b) 和上面类似,不过从后面选取.
-
:only-child 选取元素唯一的子元素,如果元素的父元素只有它一个子元素就会生效,如果还有其他的兄弟元素,则不生效
-
:only-of-type 选取唯一的某个元素类型。如果元素的父元素只有它一个当前类型的子元素就会生效。
3.3. 伪元素选择器
伪元素选择器是用来香元素设置某种特殊效果.伪元素选择器并不是真实的DOM元素,所以称之伪元素.常用的如下:
-
::first-line 为元素的第一行使用样式
-
::first-letter 为某个元素的首字母或第一个文字使用样式
-
::before 在某个元素之前插入内容
-
::after 在某个元素之后插入内容
-
::selection 对光标选中的元素添加样式
1.伪元素构造的元素是虚拟的,所以不能使用js去操作
2.first-line和first-letter不使用于内联样式,在内联样式中都会失效
3.如果同时使用了 befor 和first-letter. 第一个内容要从before中算起,如果before 中第一个为非文本内容,那first-letter也会作用到这个非文本内容上,但不会生效。
4.在CSS3 中规定, 伪类用一个冒号 (:) 表示, 伪元素用两个冒号 (::)来表示