CSS选择器

本文讨论另一个重要的CSS特征:选择器,它可以用来在一个页面内选择元素风格化Web页。

选择器类型

CSS样式有多种方式实现元素选择。各种各样的选择方法包括通过通用选择器,类型选择器,类选择器,ID选择器,祖先选择器,子孙选择器,邻接兄弟选择器和属性选择器进行选择。

这里我们将分别来看一下这几种方法(邻接兄弟和属性除外,我们将在下周进行讨论)。注意:浏览器对CSS选择器的支持是不一致的,不过你可以利用网上的说明来检测某个选择器是否能在你的目标浏览器使用。

通用

通用选择器允许你在整个页面中使用样式。基本上说来,一个样式并不指定具体的元素,类等,所以它适用于页面内的所有元素。这对设置颜色,字体等来说十分有用。

通用选择器可用于页面上的所有元素,但是他们可以被某些具体的选择器覆盖。CSS规范中指出可以使用星号(*)来表示一个通用选择器。

<html>
<head><title>CSS – Universal selectors</title>
<style type="text/css">
* {font-face: arial; font-size: 110%; color: red; background: yellow;}
</style><body>
<h1>Test Page</h1>
<p>Hey there.</p>
</body></html>

上面演示了如何使用通用选择器来为页面设定背景和默认的字体。

类型

风格化元素的一种最常用方法是通过它的类型。也就是说一个特定的元素拥有自己定义的样式,且这个样式可用于该类型的所有元素而不管元素在页面上的位置。

<html>
<head><title>CSS – Type selectors</title>
<style type="text/css">
p { margin: 5em; color: red; }
</style><body>
<h1>Test Page</h1>
<p>Hey there.</p>
</body></html>

上面的例子演示了用一个类型选择器来风格化页面中的所有段元素。

使用这种类型选择器,叶面内的所有段落元素(除非被更多特定选择器覆盖)拥有特定的页边距和红色文本。现在你也可以自己建立CSS类来处理页面上的特定元素风格化问题。

在决定一个样式覆盖什么内容时,类选择器比类型选择器有更多的控制。由类选择器定义的样式可以用于具有类属性的所有元素,不管该元素在页面中的位置。它可以很好的控制那些元素接受样式。

<html>
<head><title>CSS – Type selectors</title>
<style type="text/css">
.firstp { text-indent: 2em;margin: 1em; color: red; }
p { margin: 1em; color: blue; }
</style><body>
<h1>Test Page</h1>
<p class="firstp">Thanks for visiting.</p>
<p>Hey there.</p>
</body></html>

上面的例子演示了使用类只格式化页面中的第一段。所以第一段的是锯齿状的字体,而接下来的段落与此不同。

类选择器不能使用HTML 保留的元素如heading,p,h1等等。你还可以通过用空格分开的方法对同一个元素使用多个类。

<html>
<head><title>CSS – Class selectors</title>
<style type="text/css">
.fp { text-indent: 2em;margin: 1em; }
.fpf {color: red; font-face: arial; font-size: 16pt;}
p { margin: 1em; color: blue; }
</style><body>
<h1>Test Page</h1>
<p class="fp fpf">Thanks for visiting.</p>
<p>Hey there.</p>
</body></html>

演示了使用多个类来风格化一个特定的段落。

你可以将类选择器和类型选择器结合在一起使用,来风格化拥有分配的类的某些元素。在这个场景中,当定义样式时,元素名有一个由空格隔开的类名。

<html>
<head><title>CSS – Type selectors</title>
<style type="text/css">
p.fp { text-indent: 2em;margin: 1em; color: red; }
h1.fp {color: orange; font-face: arial; font-size:
20pt; font-weight: bold;}
p { margin: 1em; color: blue; }
</style><body>
<h1 class="fp">Test Page</h1>
<p class="fp">Thanks for visiting.</p>
<p>Hey there.</p>
</body></html>

中的例子演示了这样的技巧,即仅拥有赋予的特定类名的段元素才风格化为某种方式,而拥有相同类名的头部风格化为另一种形式。我将会在使用元素的ID属性时,更详细的介绍。