![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=1739189381-Hj0KREYl4rcp016sRiy4XudffbeLIFMS-0-907f563bfb7b4920dead6339563f2c1b)
视频讲解
包含选择器通过空格标识符来表示,前面的一个选择器表示包含框对象的选择器,而后面的选择器表示被包含的选择器,如图2.4所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P42_77525.jpg?sign=1739189381-DmTVo86IAsIJfjxEKEYOukViVQZVcpCH-0-945916e1b7b4c8de858c4bc90efd9250)
图2.4 包含选择器
【示例】本示例演示了如何使用包含选择器为不同层次下的标签定义样式。
启动Dreamweaver,新建一个网页,在<body>标签内输入如下结构。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P42_147256.jpg?sign=1739189381-sLhlcKDtF9Cb21CbbZ381Swlwgsui9YX-0-9a270d5b7dae03ab4c42777754b44735)
在<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=1739189381-3Ff3XBu7a8cWaepkJMYcGPMq7piuGPqi-0-09921ee2d0016a1af0b8eb51c6b83ca7)
视频讲解
子选择器使用尖角号(>)表示,子选择器是指定父元素所包含的子元素,如图2.5所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_112816.jpg?sign=1739189381-OTsHC4BFvJ4ucFtnBWhcqxbhmXkvpdX6-0-de50e8193ce02d4a46542c56a9bfab1a)
图2.5 子选择器
【示例】本示例演示了如何使用子选择器为不同结构中的标签定义样式。
启动Dreamweaver,新建一个网页,在<body>标签内输入如下结构。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_147258.jpg?sign=1739189381-HpdKw92SRrYOWFfdqZeCvnNjgQKdmd42-0-140d7fe50e2ae7143fa3d0dcd810bbad)
在<head>标签内添加<style type="text/css">标签,定义一个内部样式表。然后定义所有span元素的字体大小为12像素,再利用子选择器来定义所有div元素包含的子元素span的样式为24像素,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P43_147259.jpg?sign=1739189381-K0bFlODaDJg5Csq8YUKBZ9q6pGbUfXMr-0-2df6a44bbc0faf7ac52d718cdd123345)
在浏览器中预览,显示效果如图2.6所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P44_77622.jpg?sign=1739189381-X3ltrcxx62si5hgH8ciOeNNGX9INueZn-0-49342bb419c2ebdd073ef3b05ce25fc6)
图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=1739189381-y5fftYiJ35imzxAqjuw9FF6cwoPE86aI-0-a54cf354617cdafa72b12dbf0e1ddcc8)
视频讲解
相邻选择器通过加号(+)分隔符进行定义。其基本结构是第1个选择器指定前面相邻元素,后面的选择器指定后面相邻元素,如图2.7所示。前后选择符的关系是兄弟关系,即在HTML结构中,两个标签前为“兄”后为“弟”,否则样式无法应用。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P44_77634.jpg?sign=1739189381-RhNl2R0puyjkCOHKDvTwXVvgCQkueJeF-0-a47f05c3bcb0f076e8831d767547872d)
图2.7 相邻选择器结构
【示例】在本示例中,通过4种情况测试相邻选择符的应用范围,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P45_147261.jpg?sign=1739189381-pkNj1u5L7CPMYGBfBCQCk6HlkIo0SHg7-0-d4edcfa4cac7b08468f2a0a0e2261a05)
在浏览器中预览,页面效果如图2.8所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P45_113029.jpg?sign=1739189381-XW0IJ5tXJmD2qbRXoeqUtoqNsDZRU8Qn-0-a72cc9bd65d97a282f72c233539ad376)
图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=1739189381-U73Hq5DgOWHDUe1tfVbwIIvjbgwRiV4g-0-34f85cb953daaa2bc560782dc8159eb4)
视频讲解
CSS3增加了一种新的选择器组合形式——兄弟选择器。它通过波浪(~)分隔符进行定义。其基本结构是第1个选择器指定同级前置元素,后面的选择器指定其后同级所有匹配元素,如图2.9所示。前后选择符的关系是兄弟关系,即在HTML结构中两个标签前为“兄”后为“弟”,否则样式无法应用。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P46_77726.jpg?sign=1739189381-qKRzoFHm1ziz2e6fJfLgf06boQPWm4aK-0-c4a547030439ef1c4b3c42d84d934466)
图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=1739189381-0SbsbPW6Mi9M2pYmXYqYinDub5R6p0ar-0-e68dd612403bec3d7333c27e940fccbc)
在浏览器中预览,则页面效果如图2.10所示。可以看到在<div class="header">包含框中,位于<p>标签后的所有<h3>标签都被选中,设置背景色为蓝色。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113055.jpg?sign=1739189381-h8mWNLXwBt6CZeTjs5IfWtXJMpyEw0up-0-417a6aa86425d8e21e3a120d243f3b07)
图2.10 兄弟选择器
2.2.5 分组选择器
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113120.jpg?sign=1739189381-fZJAwhMpBAJIAuPd81Y0bbTplK4nO7KA-0-f58457ee8378e450a7057db9dfa77a52)
视频讲解
分组选择器通过逗号(,)分隔符进行定义。其基本结构是第一个选择器指定匹配元素,后面的选择器指定另一个匹配元素,最后把前后选择器匹配的元素都选取,如图2.11所示。
通过分组选择器可以实现集体声明,将样式表中一致的CSS样式放在一起,接着将这些选择器用逗号链接,以减少代码的书写量。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P47_113062.jpg?sign=1739189381-1e81676wUD8TCtCLZM8euE4M64OcJh0f-0-7da96f9c66136987c4ac2be47012f681)
图2.11 分组选择器
【示例】在本示例中,将上面学过的复合选择器通过分组选择器集中声明,代码如下。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P48_147264.jpg?sign=1739189381-VssyDHsi4WLWy6725XXeDzkpN8YqeqqJ-0-d1482125de9d2c49e9e26cd04b59e71a)
在浏览器中预览,页面效果如图2.12所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P48_77871.jpg?sign=1739189381-brPmTUt1FIFO3vzgle1OyofrraXVVMPa-0-3944bc49d992ef3f7d54a416c8449364)
图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。