![CSS3+DIV网页样式与布局从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/876/25456876/b_25456876.jpg)
2.2 关系选择器
把两个基本选择器组合在一起,就形成了一个复杂的关系选择器,通过关系选择器可以精确匹配页面元素。
2.2.1 包含选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P42_77602.jpg?sign=1739310983-C6KWnEbprVuvnggWNExTZ67nKJpTv2d8-0-a30298713fb086c82332a2e320cab46e)
视频讲解
包含选择器通过空格标识符来表示,前面的一个选择器表示包含框对象的选择器,而后面的选择器表示被包含的选择器,如图2.4所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P42_77525.jpg?sign=1739310983-RERJ3Q6Fmau9N9np4YU0Lm3hgbZO76az-0-fcd69476526c6582688ff850aa165ae9)
图2.4 包含选择器
【示例】本示例演示了如何使用包含选择器为不同层次下的标签定义样式。
启动Dreamweaver,新建一个网页,在<body>标签内输入如下结构。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P42_147256.jpg?sign=1739310983-rJ6MxLSu71DuXdGZruUkZSqR6qm9k4Qx-0-2e09313f41a37f71017a6aa9e660539f)
在<head>标签内添加<style type="text/css">标签,定义一个内部样式表。然后定义样式,希望实现如下设计目标。
☑ 定义<div id="header">包含框内的段落文本字体大小为14像素。
☑ 定义<div id="main">包含框内的段落文本字体大小为12像素。
这时可以利用包含选择器来快速定义它们的样式,代码如下。
#header p { font-size:14px;} #main p {font-size:12px;}
2.2.2 子选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_112894.jpg?sign=1739310983-adAHIEf3zDRpNKzP1yqN7ew9KeF5mo4i-0-eebae373419a9ed30e199def1295d35e)
视频讲解
子选择器使用尖角号(>)表示,子选择器是指定父元素所包含的子元素,如图2.5所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_112816.jpg?sign=1739310983-GjeiwuGNJ5ULGHH7d793omFUOqPDqXiq-0-3fca84f77d350f7adacea7b0d2c97a2e)
图2.5 子选择器
【示例】本示例演示了如何使用子选择器为不同结构中的标签定义样式。
启动Dreamweaver,新建一个网页,在<body>标签内输入如下结构。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_147258.jpg?sign=1739310983-rbB8ykPB7Ss4EtgygJ75snIYWUNTkY0R-0-257d19209c6ca1b9622a3160a6d7e160)
在<head>标签内添加<style type="text/css">标签,定义一个内部样式表。然后定义所有span元素的字体大小为12像素,再利用子选择器来定义所有div元素包含的子元素span的样式为24像素,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_147259.jpg?sign=1739310983-8YXopr4S8z8yFdgPOjowKhSACcAcIwJk-0-0a961a3b99678070e0f2bf810e04c2e6)
在浏览器中预览,显示效果如图2.6所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P44_77622.jpg?sign=1739310983-HExYSGB8LuSEA4DRVfA2DlkFwDvDMBan-0-00e901d67091719f5e12a5c61ec49c38)
图2.6 子选择器应用效果
从图2.6可以看到,包含在div元素内的子元素span被定义了字体大小为24像素。通过这种方式可以准确定义某个或一组子元素的样式,而不再为它们定义ID属性或者Class属性。
2.2.3 相邻选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P44_77698.jpg?sign=1739310983-A8FNJ0OctCmnfngvl2UXQwAtQ8LyVvak-0-1a1c9e5d9eaedacf98f72639b6db2995)
视频讲解
相邻选择器通过加号(+)分隔符进行定义。其基本结构是第1个选择器指定前面相邻元素,后面的选择器指定后面相邻元素,如图2.7所示。前后选择符的关系是兄弟关系,即在HTML结构中,两个标签前为“兄”后为“弟”,否则样式无法应用。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P44_77634.jpg?sign=1739310983-GXUXA7bHR8CYPiVUcrvMmlBKYPWhlaef-0-109c06a55a1950a1dc5ee6d695c6749c)
图2.7 相邻选择器结构
【示例】在本示例中,通过4种情况测试相邻选择符的应用范围,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P45_147261.jpg?sign=1739310983-t8VqCtPdfBcEpCEyHB2BMETlHBUlpb9M-0-618c5eb1613df21f8893b4e69a0576a6)
在浏览器中预览,页面效果如图2.8所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P45_113029.jpg?sign=1739310983-kOh6F0s5vLzw8uqOCbjkAbTCvp6ISaEu-0-f646738ce42d988dda4807d5cdc73396)
图2.8 相邻选择器
在上面示例中,将相邻选择器分成4种情况进行分析。
第1种:正常情况下,<p>标签和<h3>标签是兄弟元素;
第2种:添加一个<div>标签,将<p>标签和<h3>标签与第1种情况进行间隔,测试在有元素间隔时,样式是否有效;
第3种:<h3>标签为兄元素、<p>标签为弟元素,测试是否受影响;
第4种:为<p>标签和<h3>标签添加一个父层,查看是否受影响;
通过浏览器预览发现:第1种情况、第2种情况、第4种情况均有效,第3种情况无效。相邻选择器编写CSS样式:第1个元素为兄、第2个元素为弟,则HTML代码中兄和弟的关系不能调换,否则样式无效。再者,无论有多少父层,只要它们是直接兄弟关系,则样式有效,这一点与子选择器是有区别的。
2.2.4 兄弟选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P46_77779.jpg?sign=1739310983-ohz6zYioKiwt863WUM2qodSUgCNhKRZj-0-4c31390e37cbffaf4fc20e70be910df9)
视频讲解
CSS3增加了一种新的选择器组合形式——兄弟选择器。它通过波浪(~)分隔符进行定义。其基本结构是第1个选择器指定同级前置元素,后面的选择器指定其后同级所有匹配元素,如图2.9所示。前后选择符的关系是兄弟关系,即在HTML结构中两个标签前为“兄”后为“弟”,否则样式无法应用。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P46_77726.jpg?sign=1739310983-vLiSHNzacZIHeMYBzv7i0YB0LBRoAucp-0-30a24f11c194b937f8ea199e0ba3be07)
图2.9 兄弟选择器结构
兄弟选择器能够选择前置元素后同级的所有匹配元素,而相邻选择器只能选择前置元素后相邻的一个匹配元素。
【示例】以上节示例为基础,修改其中的p+h3 { background-color: #0099FF; }样式为p ~ h3{ background-color: #0099FF; },具体样式代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P46_147262.jpg?sign=1739310983-uRnMwE9d14I8uJAMuDnIt6iMwhVdAF2B-0-a7df5ee9bd1c47792124bae34af60aea)
在浏览器中预览,则页面效果如图2.10所示。可以看到在<div class="header">包含框中,位于<p>标签后的所有<h3>标签都被选中,设置背景色为蓝色。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113055.jpg?sign=1739310983-o39P19IJrNwRiOb3qBUUe65EaCkgTJfS-0-ddef7fa20f41f05e734fddf7a0ac92d8)
图2.10 兄弟选择器
2.2.5 分组选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113120.jpg?sign=1739310983-gACxTZR333lxvZ4nz0kRiLr5tDiXhps2-0-6c7010d2694a2f48ce8bdc77287112d3)
视频讲解
分组选择器通过逗号(,)分隔符进行定义。其基本结构是第一个选择器指定匹配元素,后面的选择器指定另一个匹配元素,最后把前后选择器匹配的元素都选取,如图2.11所示。
通过分组选择器可以实现集体声明,将样式表中一致的CSS样式放在一起,接着将这些选择器用逗号链接,以减少代码的书写量。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113062.jpg?sign=1739310983-umzf7Apx8qQxUkC2jW4Yvgo4KeCFnS9o-0-49f551cd836ff4fd9085a06eb704bb7a)
图2.11 分组选择器
【示例】在本示例中,将上面学过的复合选择器通过分组选择器集中声明,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P48_147264.jpg?sign=1739310983-E3P2AkEFvqoh16DD3yppscmVYu2IyQba-0-8ba63e655c730ba96933fe64c66f1622)
在浏览器中预览,页面效果如图2.12所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P48_77871.jpg?sign=1739310983-YUeVDfFaXNy1ZzIRAlWAXSLTV0J0OckQ-0-729c28ed91e8457baa748190b00dbcf1)
图2.12 分组选择器
在上面示例中,将<h1>~<h6>标签设置背景色为#99CC33,清除默认边距,通过下边距区分标题标签的空间。h1+h2,h2+h3,h4+h5代表3种兄弟元素均设置字体颜色为#0099FF;body>h6,h1>span,h4>span代表<body>标签的子元素<h6>、<h1>标签的子元素<span>、<h4>标签的子元素<span>这3种情况下的字体大小为20像素;h2 span,h3 span代表<h2>标签内的<span>、<h3>标签内的<span>(子孙辈皆可)左右边距为20像素;h5 span[class],h6 span[class]代表<h5>标签中的<span>标签含有Class属性、<h6>标签中的<span>标签含有class属性,背景色为#CC0033。