css:复合选择器(后代、子选择器、并集、伪类)
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>