整体组成
在CSS中,顶层元素被称为Rule,而CSS中的Rule又分为2类:CSSStyleRule和CSSAtKeywordRule。
CSSStyleRule是最基本的,即我们最常见的,由选择器+属性+值组成的部分,以下就是一个简单的示例:
#nav>li~li {
float: left;
margin-left: 7px;
padding-left: 7px;
border-left: 1px solid blue;
}
而CSSAtKeywordRule则是另一类,这个名词是我起的,事实上在w3c给出的JAVA API中,他被分成很多个类:
- CSSCharsetRule?– 代表@charset。
- CSSFontFaceRule?– 代表@font-face。
- CSSImportRule?– 代表@import。
- CSSMediaRule?– 代表@media。
- CSSPageRule?– 代表@page。
- CSS3又加了一个CSSAtNamespaceRule,但是由于针对CSS3的w3c JAVA API还未完成,这里没有相关的页面,其代表的是@namespace。
一目了然,所谓CSSAtKeywordRule,就是以@起始的那一批关键字类型的规则,CSS3一共就规定了以上6个,不多不少。
除了CSSStyleRule和CSSAtKeywordRule以外的,所有不能正确解释的,统统被称为CSSUnknownRule,这个自然没有太大的意义,就不详细说明。
元素顺序
CSS对元素的顺序没有太大的要求,多数位置可以出现在任意位置,出现任意的次数,除了2个特例:
- @charset只能出现在文档头部,前面不能有任何字符。
- @import必须出现在@charset(如果有的话)之后,其他规则之前,当然可以有多个。
- @import不能出现在大括号之间(语法上称为block内部)。
因此一个CSS文档的顺序基本是这样的:
- @charset声明。