每个选择器都有它的作用范围
,前面介绍了三种基本的选择器,它们的作用范围都是一个单独的集合
如标记选择器的作用范围是具有该标记的所有元素的集合,类选择器的作用范围是自定义的某一类元素的集合,有时我们希望对几种选择器的作用范围取交集、并集、子集
后对选中的元素再定义样式,这时就要用到复合选择器了,它是通过对几种基本选择器的组合,实现更强、更方便的选择功能。
复合选择器就是两个或多个基本选择器,通过不同方式组合而成的选择器。主要有三种:
1.交集选择器
交集选择器是由两个选择器直接连接构成,其结果是选中两者各自作用范围的交集
。
其中第一个必须是标记选择器,第二个必须是类选择器或id选择器。例如:h1.class;p#intro。这两个选择器之间不能有空格。
交集选择器应用如下,下面的例子中p标记与h2标记都设置了类hyit,若希望单独设置一个定义了类hyit的标记,那么需要使用交集选择器p.hyit
p {
font-size: 24px;
}
p.hyit
{
color:Blue;
font-style:italic;
}
class="hyit"
>淮阴工学院</h2>class="hyit"
>计算机工程学院</p>
2.并集选择器
并集选择器就是对多个选择器进行集体声明
,多个选择器之间用“,”
隔开。
如果某些选择器定义的样式完全相同,或者部分相同,这时便可以利用并集选择器
同时声明风格完全相同或部分相同的样式。
如 h2,.class{…} 其选择范围如图所示:
并集选择器举例:
h1,h2,h3,p {
font-size: 12px;
color: purple;
}
h2.special, .special, #one {
text-decoration: underline;
}
class="special"
>ASP.NET技术</h2>id="one"
>JAVA程序设计</h4>class="special"
>AJAX技术</p> * {
font-size: 12px;
color: purple;
}
class="special"
>ASP.NET技术</h2>id="one"
>JAVA程序设计</h4>class="special"
>AJAX技术</p>
3.后代选择器
在后代选择器中,规则左边的选择器一端包括两个或多个用空格
分隔的选择器。选择器之间的空格
是一种结合符
(combinator)。每个空格结合符可以解释为“...
在 ... 找到”、“... 作为 ... 的一部分”、“... 作为 ... 的后代”,但是要求必须从右向左读选择器。
因此,ul li 选择器可以解释为 “作为 ul 元素后代的任何 li 元素”。如果要从左向右读选择器,可以换成以下说法:“包含 li 的所有 ul 会把以下样式应用到该 li”。
包含选择器的写法是把外层的标记写在前面,内层的标记写在后面,之间用空格
隔开。其选择范围如图所示:
后代选择器举例:
ul li{
color:Green;
}
ol li{
color:Blue;
}
<ul>
</ul>
<ol>
</ol>
后代选择器的功能极其强大。有了它,可以使 HTML 中不可能实现的任务成为可能。
假设有一个文档,其中有一个边栏,还有一个主区。边栏的背景为蓝色,主区的背景为白色,这两个区都包含链接列表。不能把所有链接都设置为蓝色,因为这样一来边栏中的蓝色链接都无法看到。
解决方法是使用后代选择器。在这种情况下,可以为包含边栏的 div 指定值为 sidebar 的 class 属性,并把主区的 class 属性值设置为 maincontent。然后编写以下样式:
后代选择器的使用非常广泛,实际上不仅标记选择器可以用这种方式组合,类选择器和ID选择器也都可以进行嵌套
,而且后代选择器还能够进行多层嵌套。
例如:
有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的
。
例如,如果写作 ul em,这个语法就会选择从 ul 元素继承的所有 em 元素,而不论 em 的嵌套层次多深。
经验
:选择器的嵌套在CSS的编写中可以大大减少对class或id的声明。因此在构建页面html框架时通常只给外层标记(父标记)定义class或id,内层标记(子标记)能通过嵌套表示的则利用这种方式,而不需要再定义新的class或id。
CSS样式的总体设计原则:
©版权所有: 淮安深度人工智能科技有限公司2020, 备案号:苏ICP备2020056902号-2 | 技术支持:淮阴工学院计算机与软件工程学院《Web开发技术》教学团队