目录
一、复合选择器:
复合选择器分为两类,交集选择器和并集选择器(群组选择器)
1.交集选择器:
语法:选择器1选择器2选择器3····{}
作用:选中同时符合选择器1及选择器2···的结构
注意:1、如果选择器中有标签选择器,标签选择器必须放第一位
2、选择器的优先级是合并计算
2.并集选择器(群组选择器):
语法:选择器1,选择器2,选择器3,····{}
作用:同时选中选择器1和选择器2···对应的结构
注意:选择器的优先级是分别计算的
例1:选择器匹配所有class为red的<div>元素
css
div.red {
font-size: 24px;
}
例2:选择器匹配id为title1和class为title2的所有元素
css
#title1,
.title2 {
color: orange;
}
二、关系选择器
关系选择器包括:子选择器、后代选择器、和下一个兄弟选择器,下面所有兄弟选择器四种
1、子选择器:
语法:父元素>子元素{}
作用:通过父元素选中直接子元素(嵌套在别的块标签里的就不选)
注意:原则上,结构可以一层层限制,但不宜太深(一般最多三层即可)
一则:可读性太差 二则:修改维护也不方便
2、后代选择器:
语法:祖先元素 后代元素{} -- 注意元素中间是有一个空格的
作用:通过祖先元素选中所有后代元素(会检索嵌套在别的标签里的后代元素)
注意:1、祖先关系包含父子关系
2、能用子选择器就不用后代选择器,子选择器的效率比后代要高
3、下一个兄弟选择器:
语法:兄+弟{}
作用:选中紧跟其后的一个弟弟(弟元素)
注意:写的时候注意要匹配的弟元素一定紧跟兄元素其后,不要中间有<br>之类
4、选择下面所有的兄弟选择器:
语法:兄~弟{}
作用:选中紧跟其后的所有弟弟(弟元素)
注意:前面的元素不选,从选中的弟元素往下开始匹配
例题:
html
<div id="cs">
我是超市<br />
<span>我是零食区</span>
<p>
我是生鲜区
<span>肉类 </span>
</p>
<span>姑临一我就清,颜不。</span>
<p>太判笔下尹呼中来皇。</p>
<br />
<br />
<span class="s2">我是鞋包区</span><br />
<strong>言揽使上便措,白千。</strong>
<span>订瞠训,挟的感,国。</span>
<em>不文见,几一家,一。</em>
<span class="s2">我是洗护区</span>
</div>
根据如上div内容回答下面的四个例题
例一:选中id为cs的元素内直接子段落<p>标签的直接子<span>元素
css
#cs > p > span {
color: red;
}

例二:选中id为cs的元素内所有<span>元素
css
#cs span {
color: red;
}

例三:选中id为cs的直接子元素p紧跟其后的类名为s2的兄弟标签
css
#cs > p + .s2 {
background-color: red;
}

中间有两个换行,紧跟在p后面的是<br>,把这两换行删掉就可以选中了

例四:选中id为cs的直接子元素span后面的所有p标签
css
#cs>span~p {
background-color: red;
}

三、属性选择器:
语法:属性名{} 选择含有指定属性的元素
属性名=属性值{} 选择含有指定属性和属性值的元素
属性名\^=属性值{} 选择属性值以指定值开头的元素
属性名$=属性值{} 选择属性值以指定值结尾的元素
属性名\*=属性值{} 选择属性值含有某值的元素
1.选择含有id属性的元素
css
[id] {
color: red;
}
2.选择含有title属性且属性值等于ab的元素
css
[title=ab]{
background-color: pink;
}
3.选择含有title属性且属性值是由ab开头的元素
css
[title^="ab"] {
background-color: pink;
}
4.选择含有title属性且属性值是由ab结尾的元素
css
[title$="ab"] {
background-color: pink;
}
5.选择title属性且属性值含有da的元素
css
[title*="da"] {
background-color: pink;
}
四、伪类选择器:
伪类选择器:不是固定的类,可变化的,可以根据情况,应用在不同的结构上
常用的伪类选择器:顺序类的,鼠标移入,鼠标点击,否定伪类·······
语法: :伪类选择器名{}
1、顺序伪类
特点:一般请情况下,使用:开头
(1):first-child 第一个子元素
(2):last-child 最后一个子元素
(3):nth-child() 选中第n个子元素
特殊值: n 所有的
2n或even 选中偶数
2n+1或odd 选中奇数
以上这些伪类都是根据所有的子元素进行排序
(1):first-of-type
(2):last-of-type
(3):nth-of-type()
功能跟上面相似, 不同的是,这是在同类型的子元素中去选择
需求一:将ul里的第一个li自动一直设置为红色
匹配列表与第一个元素的交集
css
li:first-of-type {
color: red;
}
2、not()否定伪类
作用:将符合条件的元素从选择器中去除
匹配将列表中class为l1的从选择器中去除
css
li:not(.l1) {
color: red;
}
3、元素的伪类
超链接a标签是一个特殊的标签它有独有2个伪类选择器,:link&:visited
1、:link 用来表示未访问过的链接(正常链接)
2、:visited 用来表示访问过的链接( 由于隐私的原因,所以visited只能改字体颜色)
css
a:link {
color: red;
background-color: aqua;
font-size: 12px;
}
a:visited {
color: green;
background-color: blueviolet;
font-size: 30px;
}
:visited伪类选择器的font-size不会生效
4、鼠标移入
:hover 用来表示鼠标移入的状态
css
h2:hover {
color: red;
font-size: 40px;
background-color: green;
text-decoration: underline;
}
5、鼠标点击
:active 鼠标点击后的状态
.title的默认背景色为粉色,.title:active伪类在激活时将文字变成白色,.a1:hover伪类在悬停时文字变为黑色,.a1:active伪类在激活时背景变成粉色。
css
.title {
background-color: pink;
}
.title:active {
color: white;
}
.a1:hover {
color: black;
}
.a1:active {
background-color: pink;
}
6、按钮隐藏显示元素
html
<button>按钮</button>
<div class="box"></div>
class值box设置盒子宽高背景,并将其隐藏,button:hover+.box 按钮的紧跟着的弟元素box,显示
html
<style>
.box {
width: 100px;
height: 100px;
background-color: pink;
display: none;
}
.box:hover {
width: 200px;
height: 200px;
}
button:hover + .box {
width: 200px;
height: 200px;
display: block;
}
</style>
面试题:
超链接的4个伪类,设置时,有没有顺序要求?
遵循"lvha"的顺序
:link,:visited,:hover,:active
css
.a2:visited {
color: blueviolet;
}
.a2:hover {
color: green;
}
.a2:active {
color: orange;
}
.a2:link {
color: red;
}