![Div+CSS3.0网页布局案例精粹(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/272/29126272/b_29126272.jpg)
2.6 CSS的层次选择符
层次选择符通过HTML的DOM元素之间的层次关系获取元素,其主要的层次关系包括后代、父子、相邻兄弟和通用兄弟几种关系,通过其中某类关系可以方便快捷地选定需要的元素。
2.6.1 后代选择符
后代选择符也称为包含选择符,作用就是可以选择某个元素的后代元素,如“X Y”,X为祖先元素,Y为后代元素,X Y表示选择X元素中所包含的所有Y元素。这里的Y元素不管是X元素的子元素、孙辈元素,还是与X元素有更深层次的关系,都将被选中。换句话说,不论Y在X中有多少层级关系,Y元素都将被选中。
技能案例:使用后代选择符定义样式
源文件:源文件\第2章\2-6-1.html
(1)新建HTML文档,创建style标签,在style标签中定义如下的CSS样式:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_43.jpg?sign=1738842909-yYkzBGgATYMtAVFPPTpGDnZCZpnmBUVr-0-41eebd942db662712b1e3b23c898f656)
(2)对<h1>标签中所包含的<span>标签进行样式设置,代码如下:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_44.jpg?sign=1738842909-vOldKzxLDb0nIYdYvRYPHXoboIbSKz8a-0-53d54604fa87ea3597686615f99fd558)
(3)图2-13所示为案例的完整代码,图2-14所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_45.jpg?sign=1738842909-Rwu5mVNXqlfmPYtAiZZlCshj9ReIj3cO-0-536e807a8d4153c2fc028304bb57dabc)
图2-13 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_46.jpg?sign=1738842909-ri5XlpBfZMaMTlUilBxxXDxxovUykETj-0-cfd7550fc35e333742e7aa8a9a1d7ff0)
图2-14 在浏览器中预览的页面效果
<h1>标签中的所有<span>标签将被应用font-weight:bold的样式设置,需注意的是,仅对有此结构的标签有效,对于单独存在的<h1>标签或单独存在的<span>标签,以及其他非<h1>标签包含的<span>标签均无效。
这样做能帮助避免过多的id及class的设置,可以直接对需要设置的元素进行设置。
2.6.2 子选择符
子选择符只能选择某元素的子元素,如“X > Y”,X为父元素,Y为子元素, X > Y表示选择X元素中包含的所有Y元素。
子选择符与后代选择符不同,在后代选择符中,Y是X的后代元素,无论有多少层级关系Y元素都会被选中,而在子选择符中Y仅是X的子元素。
2.6.3 相邻兄弟选择符
相邻兄弟选择符可以选择某个元素之后与其相邻的元素,它们具有一个相同的父元素。换句话说,X和Y是同辈元素,Y元素在X元素的后面,并且X和Y元素相邻,这样就可以使用相邻兄弟选择符来选择Y元素。
技能案例:使用相邻兄弟选择符设置样式
源文件:源文件\第2章\2-6-3.html
(1)新建一个HTML文档,在<body>标签中输入如下的HTML代码:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_47.jpg?sign=1738842909-bOieYcPEeQeTC1QkqFlzCOZl18ACG6l1-0-22e8acba01c82c1c73169ba634c3edf9)
(2)如果需要定义应用了类名称active的<li>标签之后紧邻的<li>标签的样式,就可以使用相邻兄弟选择符。在style标签中,定义如下的样式:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_48.jpg?sign=1738842909-4iNeXG0qQWZx6xwdC71BN5RyL7GFffX7-0-d7ed9f223ab9c4a907680ea54bc6d1cd)
(3)通过该相邻兄弟选择符设置样式,可以使应用了类名称active的<li>标签之后紧邻的<li>标签显示所定义的样式效果。图2-15所示为案例的完整代码,图2-16所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_49.jpg?sign=1738842909-JDPe5S1BOoUY3SjHooFRVbfgWYlAwuTv-0-edcd262437a15f6e551c43327ee63afd)
图2-15 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_50.jpg?sign=1738842909-TN2QMvwKQNmgSh0GQ1ukcYqOv4UKkZyj-0-66f3073c98a94d5b2b094477458154ea)
图2-16 在浏览器中预览的页面效果
2.6.4 通用兄弟选择符
通用兄弟选择符是CSS中的一种用于选择某个元素之后的所有兄弟元素的选择符,其与相邻兄弟选择符类似,它们需要在同一个父元素之中。也就是说,X和Y是同辈元素,并且Y元素在X元素之后,通用兄弟选择符可以选择X元素之后的所有Y元素。
技能案例:使用通用兄弟选择符定义样式
源文件:源文件\第2章\2-6-4.html
(1)新建一个HTML文档,在<body>标签中输入如下的HTML代码:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_51.jpg?sign=1738842909-VQpaAPMfoeyMLhsHkdRF7NtJFJ4Q6XHb-0-e3fd61a215bf31c25232972e9e2f2469)
(2)如果需要定义应用了类名称active的<li>标签之后所有的<li>标签的样式,就可以使用通用兄弟选择符,样式设置如下:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_52.jpg?sign=1738842909-gvTGDgGhoClIq5mZKx60elyrzskgBmcI-0-0ee2093c0ed29caf4448e7a384fc0e4d)
(3)通过该通用兄弟选择符设置样式,可以使应用了类名称active的<li>标签之后所有在同一父元素中的<li>标签显示所定义的样式效果。图2-17所示为案例的完整代码,图2-18所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_53.jpg?sign=1738842909-7RY9nD3R324hnBPMrtMEsRMOnxJ9F7qF-0-612d7ba906879719400f97c7f291be21)
图2-17 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_54.jpg?sign=1738842909-iTCeCQTAxrEDdihASIYbCjKYePd9GTgN-0-f8cba2d28a78cd8b94e3e7798747944f)
图2-18 在浏览器中预览的页面效果
2.6.5 层次选择符浏览器适配
层次选择符的浏览器兼容性如表2-4所示。
表2-4 层次选择符的浏览器兼容性
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_55.jpg?sign=1738842909-g6HFfBwXvb2sWElR2yFSQOK0PfnrPFqN-0-238762ed259eda74dd8c3d44d398ab1b)