sdbxpjzq 2020-05-31
1、什么是复合选择器
在css中,可以根据选择器的类型,把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上的,对基础选择器进行组合形成的
复合选择器可以更准确、更高效的选择目标元素(标签)
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
常用的复合选择器:后代选择器、子选择器、并集选择器、伪类选择器等等
2、后代选择器
(1)后代选择器又称为包含选择器,可以选择父元素里面的子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就发生外层标签的后代
(2)举例
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
ol li{
color: red;
}
</style>
</head>
<div></div>
<body>
<ol>
<li>星期一</li>
<li>星期二</li>
<li>星期三</li>
<li>星期四</li>
</ol>
</body>
</html>元素一是父亲,元素二是孩子,最终修改的是元素二(孩子,可以是儿子、孙子... ...)

<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
ol li a{
color: red;
}
</style>
</head>
<div></div>
<body>
<ol>
<li><a href="#">星期一</a></li>
</ol>
</body>
</html>
区分两个相同的标签元素:
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
ol li a{
color: red;
}
.nav li a{
color: yellow;
}
</style>
</head>
<div></div>
<body>
<ol>
<li><a href="#">星期一</a></li>
</ol>
<ol class="nav">
<li><a href="#">星期二</a></li>
</ol>
</body>
</html>
3、子选择器
子选择器只能选择作为某元素的最近一级子元素
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
ol li a{
color: red;
}
.nav>a{
color: yellow;
}
</style>
</head>
<div></div>
<body>
<ol>
<li><a href="#">星期一</a></li>
</ol>
<ol class="nav">
<a href="#">星期二</a>
<li><a href="#">星期三</a></li>
</ol>
</body>
</html>
元素一与元素二中间用 > 相分隔
4、并集选择器
并集选择器可以选择多组标签,同时为他们定义相同的样式,通常用于集体声明
(1)熊大和熊二都改为红色:
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div,p{
color: red;
}
</style>
</head>
<body>
<div>熊大</div>
<p>熊二</p>
<span>光头强</span>
<ul class="pig">
<li>小猪佩奇</li>
<li>猪爸爸</li>
<li>猪妈妈</li>
</ul>
</body>
</html>
元素之间用逗号分隔
(2)熊大、熊二和小猪一家都改为红色:
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div,p,.pig li{
color: red;
}
</style>
</head>
<body>
<div>熊大</div>
<p>熊二</p>
<span>光头强</span>
<ul class="pig">
<li>小猪佩奇</li>
<li>猪爸爸</li>
<li>猪妈妈</li>
</ul>
</body>
</html>
5、伪类选择器
用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第一个、第n个元素
伪类选择器的最大特点是用冒号(:)表示
伪类选择器的种类很多,例如:链接伪类、结构伪类
a:link 选择所有未被访问的链接
a:visited 选择所有已经被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起的链接)
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
a:link {
/*未访问的链接*/
color: #333;
text-decoration: none;
}
a:visited {
/*访问过的链接*/
color: red;
text-decoration: none;
}
a:hover {
/*鼠标经过的时候的链接*/
color: deeppink;
text-decoration: none;
}
a:active {
/*活动链接*/
color: aquamarine;
text-decoration: none;
}
</style>
</head>
<body>
<a href="#">新闻</a>
</body>
</html>

为了确保伪类生效,需要按照LVHA的顺序书写:link-visited-hover-active(LV包包hao)
6、focus伪类选择器
用于选择获得焦点的表单元素,焦点就是光标,一般情况下<input> 类表单元素才能获取,因此这个选择器也要针对于表单元素来说
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
input:focus{
background-color: red;
}
</style>
</head>
<body>
<input type="text" /><br />
<input type="text" /><br />
<input type="text" /><br />
</body>
</html>

background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT