CSS速成指南(4)

2.2.3  子选择器

子选择器与后代选择器类似,但其对何时应用样式有更多限制,其只选择某一元素的直接子元素来应用样式。例如,下列代码使用一个后代选择器将一个段落中的粗体文本改为红色,即使粗体文本本身在斜体标记中(例如,<p><i><b>Hello</b> there</i></p>):

p b { color:red; }

在这个例子中,单词Hello显示为红色。不过,当不需要这种较通用的行为时,子选择器可用于缩小选择器的范围。例如,下列子选择器仅当元素是段落的直接子元素,而元素本身没有包含在另一元素中时才把粗体文本设置为红色。

p > b { color:red; }

现在,单词Hello将不改变颜色,因为它不是段落的直接子元素。

2.2.4  ID选择器

如果给元素指定一个ID名称(例如,<div id='mydiv'>),则可以直接以下列方式通过CSS访问它,将div中所有文本改为斜体:

#mydiv { font-style:italic; }

1. 重用ID

相同ID在文档中只能使用一次,因此,只有第一次出现的ID对应的元素会接受CSS规则指派的属性值。但在CSS中,可直接引用任何同名的ID,只要它们出现在不同的元素类型中,如下所示:

<div id='myid'>Hello</div>

<span id='myid'>Hello</span>

因为ID通常只应用于唯一元素,所以下列规则将下划线只应用于第一次出现的myid对应的元素:

#myid { text-decoration:underline; }

不过,可确保CSS将规则应用于具有同名ID的元素,如下所示:

span#myid { text-decoration:underline; }

div#myid { text-decoration:underline; }

或者,采用更简洁的形式(见稍后的2.2.8节):

span#myid, div#myid { text-decoration:underline; }

警告:

如果使用这种形式的选择,应记住,任何要访问这些元素的JavaScript无法很容易地这样做,因为常用的getElementByID()函数将只返回第一次出现的ID对应的元素。为了引用任何其他实例,编程人员必须搜索文档中的整个元素列表,这是一个很繁重的任务。

2.2.5  类选择器

一次引用多个元素的更好方法是使用类。如果想使页面中许多元素共享一个样式,可给它们指派相同的类名(例如,<span class='myclass'>),然后创建一条规则一次修改所有这些元素。如下规则所示,它使用该类为所有元素创建一个10像素的左边距偏移量:

.myclass { margin-left:10px; }

在现代浏览器中,HTML元素也可使用多个类,方法是用空格将它们隔开,如<span class='thisclass thatclass otherclass'>。这是本书使用的技术,用于给元素提供多个样式。较老的浏览器只允许使用单个类,因此,如果针对的是老式浏览器,应将最重要的类放在第一位。

1. 缩小类范围

通过指定应用的元素类型可缩小类的作用范围。例如,下列规则将设置只应用于使用main类的段落:

p.main { text-indent:30px; }

在这个例子中,只有使用main类的段落(例如,<p class='main'>)才接受这个新的属性值。其他试图访问该类(例如,<div class='main'>)的元素类型将被忽略。

读书导航