新增加了一些HTML扩充以支持样式表。这些扩充允许在HTML文档中包含样式表,允许HTML文档链接外部样式表,允许CSS规则与某一类单元相关联。
仅少数HTML扩充是必须的:三个新单元:STYLE、SPAN 和具有属性 REL="stylesheet" 的 LINK;三个新属性:CLASS、ID 和 STYLE——这些属性被很多 BODY 类单元所用。
1.LINK单元:引用外部样式表
LINK 的属性包括 HREF、ID、REL、REV、TITLE、TYPE。LINK是一个空的 HEAD 级单元,描述文档和其它文档或资源的关系。属性REL或REV,二者必选其一,定义LINK所链接的两个资源之间的关系;强制属性HREF包含着第二个资源的URL。其余属性(ID、TITLE、TYPE)是可选的。ID值可以是名称别名,从原理上讲,允许将LINK单元本身当作超文本链接的目标;TITLE值可以是描述链接目标的字符串。TYPE给出目标资源的MIME类型,例如HTML文档的MIME类型是“text/html”。
为了引用样式表,LINK单元的正确格式为:
<LINK REL="stylesheet" TYPE="mime/type" HREF="url">
赋值 REL="stylesheet" 表明目标资源是一张样式表。“mime/type”是样式表的MIME类型。因此,TYPE允许使用各种不同的样式表语言。对于CSS样式表来说,正确的MIME类型赋值为:TYPE="text/css"。对DSSSL样式表而言,正确的赋值为“application/dsssl”,而对 JavaScript Accessible 而言,其值为“application/javascript”。
要注意的是,一个文档可以包含不止一个引用外部样式表的LINK单元。
2.STYLE单元
STYLE包含作用于文档的样式表指令。STYLE 单元包含两个可选的属性:TITLE、TYPE。TITLE的值是与样式表相关联的主题。如果在文档中应用了多张样式表,TITLE可以用作是样式表的标签,用户可以选择使不同的样式表无效。但目前还没有浏览器提供此功能。TYPE给出了样式表内容的MIME类型。
STYLE单元允许把格式化信息放置在当前文档中,而不是放置在通过LINK单元所引用的第二个文件中。因此,STYLE单元可用于那些支持样式表而不支持LINK单元的浏览器。STYLE还另有两个很重要的用途:开发和测试一张样式表;定制一张外部样式表。因此,可通过STYLE单元进行小范围的、局部的修改而更多的布局细节由所链接的外部样式表完成。
3.SPAN单元:选择具有特别样式的文本
用法:<span>....</span>
SPAN用于标记由相关联样式表定义其特别样式的文本。在无样式表指令的情况下,SPAN不会影响样式。可以将SPAN看作是对FONT在一般意义上的替代。
SPAN具有三个可选的属性——CLASS、ID、STYLE。这些属性是为了支持样式表而增加的,它们几乎被所有的正文类单元所支持。
4.CLASS属性
用法:CLASS="(name)"(可选)
CLASS指定单元的类名,它使单元子类化(subclassing)称为可能。多种单元可以具有相同的CLASS属性值。因此,子类化对于结构化文档非常有用。CSS样式表可以指定规则用于所有具有特定类值的单元,或用于具有特定类值的某一单元。类值在选择符中有所反映,其前面加以一句点(选择符是规则的一部分,它表明规则用于哪些单元)。
注意:单元名和类值是由句点分隔开的。当类值本身包含句点时,这种用法将带来一些问题。CSS语法规则使用反斜线来“逃避”类似句点这样的特殊字符。例如,有这样的赋值“CLASS=nacs.lisp”,它在CSS选择符中应表示为:“.nacs\.lisp”。然而,这种逃避机制并没有受到广泛的支持。
4.ID属性
用法:ID="(name)"(可选)
ID唯一指定单元标识符。也就是说,同一文档中,没有两个单元的ID值是相同的。这一点正好与CLASS相反,不同的单元可以有相同的CLASS值。CSS样式表可以指定用于特定ID或具有特定ID值的单元的规则。在选择符中,ID值前带有一个“#”号。
从原理上讲,以ID标识的单元可以作为超文本链接的目标:ID最初设计的作用与定位单元的NAME属性是一样的。然而,当前的多数浏览器不支持这种做法。
同CLASS一样,ID值包含句点会导致某些问题,因为CSS句法分析器会将句点看成是CLASS属性值的起始标志。
5.STYLE属性
用法:STYLE="(CSS声明)"(可选)
STYLE属性包含样式表指令,这些指令将作用于与之相关联的单元内容。使用STYLE属性避免了文档头对STYLE单元的需要,同时也是消除HTML标记中的局部样式表指令的方法之一。注意,这种方法不值得提倡,较好的方式是,将所有的样式表指令放在一个STYLE单元或者是放在一个被链接的外部样式表文件中。
赋给STYLE的值必须是由分号分隔的有效的CSS声明。注意,某些声明是需要引号的。因为在STYLE属性值两边使用双引号可能会引起冲突,所以必须用单引号把放置在STYLE中的CSS特性包括起来。
6.简单伪类选择符
伪类选择符与类选择符类似,只是它其中的那些类似于类的信息与 HTML CLASS 的属性值没有关系。伪类信息来自于浏览器自身,所包含的信息与文档的状态或文档中特定单元的状态有关。CSS1 只定义了三个伪类:link,表明超文本定位符还没有被用户访问过;visited,表明超文本定位符先前被用户访问过;active,表明是活动的链接,也即,链接正被用户选择。
CSS通过连接类名和单元名的分隔符来区分伪类和真正的类——对于伪类,分隔符是一个冒号(:)。这样,CSS1中的三个可能的伪类选择符是:A:link,A:visiter,A:active。选择符不能包含多个伪类,象 A:link:active 这样的选择符是非法的。
伪类和一个普通的类选择符可以组合在一起,其一般形式如下:
NAME.calss : pseudoclass
其中,NAME是单元名,class 是类名,pseudoclass 是伪类名。注意类名必须最先出现,其后才是伪类名。