书写CSS样式表时,可以使用CSS基础选择器选中HTML元素。但是在实际网站开发中,一个网页可能包含成千上万的HTML元素,如果仅使用CSS基础选择器是远远不够的。为此,CSS提供了儿种复合选择器,实现了更强、更方便的选择功能。复合选择器是由两个或多个基础选择器通过不同的方式组合而成的。CSS复合选择器包括标签指定式选择器、后代选择器和并集选择器,具体介绍如下。
(1)标签指定式选择器
标签指定式选择器又称为“交集选择器”,由两个选择器构成,一个为标签选择器,另一个为class选择器或id选择器,两个选择器之间不能有空格,例如,“h3.special”或“pone”。
下面通过一个案例对标签指定式选择器做具体演示。
<!doctype html>
<html>
<head>
<meat charset="utf-8">
<title>标签指定式选择器的应用</title>
<style type="text/css">
p{ color:blue;}
·speclal{color:green;}
p.special{color:red;} /*标签指定式选择器*/
</style>
</head>
(body>
<p>普通段落文本(蓝色)</p>
<p clasa="apecial“>指定了.special类的段落文本(红色)</p>
<h3 class="spectal">指定了,special类的标题文本(绿色)</h3>
</body>
</html>
上例中定义了
标签和“special”类的样式;此外,还单独定义了“pspecial”,用于控制特殊显示的样式。
(2)后代选择器
后代选择器用于选择元素或元素组的后代,其定义方法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的“后代”。
如果
标签内嵌套标签,就可以使用后代选择器对其中的标签进行控制,如下。
<!doctype htnl>
<html>
<head>
<meta charset="utf-8">
<title>后代选择器</title>
<style type-"text/css">
p strong{color:red:} /*后代选择器*/
strong{color:blue:}
</style>
</head>
<body>
<p>段落文本<strong>嵌套在段落中,使用strong标签定义的文本(红色)。</strong></p>
<strong>嵌套之外由strong标签定义的文本(蓝色)。</strong>
</body>
</html>
定义了两个标签,并将第一个标签嵌套在
标签中,然后分别设置标签和“p strong”的样式。运行效果如图所示。
通过图片可以看出后代选择器p strong定义的样式仅适用于嵌套在
标签中的标签,其他的标签不受影响。需要说明的是,后代选择器不局限于应用在两个元素中,如需要加入更多的元素,只需在元素之间加上空格即可。如果例3-l1中的标签中还嵌套了一个标签,要想控制这个标签,可以使用“pstrong em”选中该标签。
(3)并集选择器
并集选择器的各个选择器通过英文逗号连接而成,任何形式的选择器(包括标签选择器、类选择器和i选择器),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同或部分相同,可以利用并集选择器为它们定义相同的CSS样式。
如果在页面中有2个标题和3个段落且它们的字号和颜色相同,同时其中一个标题和两个段落文本有下画线效果,这时就可以使用并集选择器定义CSS样式,如下例所示。
<!doctype html>
<html>
<head>
<meta charaet="utf-8">
<title>井集选择器</title>
<style type="text/css">
h2,h3,p{color:red; font-size:14px:}/*不同标签组成的并集选择器*/
h3,.special,#one{text-decoration:underline;} /*标签选择器、类选择器、id选择器组成的并集选择器*/
</style>
</head>
<body>
<h2>二级标题文本。</h2>
<h3>三级标题文本,加下画线,</h3>
<p claas="special">段落文本1,加下画线。</p>
<p>段落文本2,普通文本。</p>
<p id="one">段落文本3,加下画线。</p>
</body>
</html>
在例3-12中,使用由不同标签组成的并集选择器“h2.h3.p”控制所有标题和段落的字号和颜色。然后,使用由标签选择器、类选择器、id选择器组成的并集选择器“h3.special,fhfone”定义某些文本的下画线效果。