![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=1739277655-1yfe5LqScCxc312PiGOi5KOky8Pj2QZQ-0-1d71cf401ae2d32547287ea4fc0b8b5c)
(2)对<h1>标签中所包含的<span>标签进行样式设置,代码如下:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_44.jpg?sign=1739277655-8Cm8yo7hNBMxX3qBkouWIDQBJS2zu2J9-0-f88273b05dfee8a6f07c3517d1b892e0)
(3)图2-13所示为案例的完整代码,图2-14所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_45.jpg?sign=1739277655-aOczFbjLjCs154H7ShoJjPXqGqz8IQdO-0-8aaa1cd42d2814aa2544c1f5274d2043)
图2-13 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_46.jpg?sign=1739277655-Ox6NwbmTJo6eLbXiqGLq8lBhDcHm2CrH-0-4db352214fe668fcd9c90dba7cd7fbb0)
图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=1739277655-ksuArsfeytRm0dtiR5bxTr03S48SOnie-0-0eea406a3ef54d3263c4511b62693a40)
(2)如果需要定义应用了类名称active的<li>标签之后紧邻的<li>标签的样式,就可以使用相邻兄弟选择符。在style标签中,定义如下的样式:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_48.jpg?sign=1739277655-GR7Af1LM0dGweLGhzwxq8rVBi7gI4qw2-0-6d4da321ca37840329a40fbfcdc7c632)
(3)通过该相邻兄弟选择符设置样式,可以使应用了类名称active的<li>标签之后紧邻的<li>标签显示所定义的样式效果。图2-15所示为案例的完整代码,图2-16所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_49.jpg?sign=1739277655-of3sYzzj4mVV4HAcYbO1eLN6w3UhX5FF-0-69e6c6ae003a8642e6f925a10ad89b9d)
图2-15 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_50.jpg?sign=1739277655-mEIBCYLzJdjCK7CDtFPz2YtzeFaISMjQ-0-770b1d75e7530887585e511c366ac2b1)
图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=1739277655-L44AF9BnipdAQ6PHXUNS9vT257pspARA-0-45a5a2ab5a721eb1147ccf372d137441)
(2)如果需要定义应用了类名称active的<li>标签之后所有的<li>标签的样式,就可以使用通用兄弟选择符,样式设置如下:
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_52.jpg?sign=1739277655-dA88YVmZx07SwXTEOWzIJhh0etbaL4Kl-0-2b19c3dd4eb763dd4d64413223d79e62)
(3)通过该通用兄弟选择符设置样式,可以使应用了类名称active的<li>标签之后所有在同一父元素中的<li>标签显示所定义的样式效果。图2-17所示为案例的完整代码,图2-18所示为在浏览器中预览的页面效果。
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_53.jpg?sign=1739277655-qkufA40lHhawueHg9nwyKM0XjNFdP38L-0-a8966932608ab11025c170142005be2d)
图2-17 案例的完整代码
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_54.jpg?sign=1739277655-YNM6OS1qg6RuGNDohvMkLdLkaTTVZdL7-0-6a8fc180ac50f046e5a7c4b27e909b01)
图2-18 在浏览器中预览的页面效果
2.6.5 层次选择符浏览器适配
层次选择符的浏览器兼容性如表2-4所示。
表2-4 层次选择符的浏览器兼容性
![](https://epubservercos.yuewen.com/47F5DE/16264452405767906/epubprivate/OEBPS/Images/txt002_55.jpg?sign=1739277655-RLs4Qd1UeuHozFAC3ItZrsHVlDBjTxv3-0-fbde80393ef363a33bca43b9f729b9f6)