對於將諸如粗體和Helvetica樣式應用於特定的XML元素來說,CSS是一種非常簡單、易懂的語言。任何常用的字處理軟件都具有CSS支持的大多數樣式。例如,可選擇字體、字體的粗細、字號、背景顏色、各種元素的間距、元素周圍的邊框等等。但是,所有的樣式信息並不在文檔之內存儲,而是放置在一種稱之為樣式單(style sheet)的獨立文檔中。僅僅改變樣式單就可以以多種不同方式格式化一個XML文檔。不同的樣式單可用於不同的目的--打印、Web、展示和其他用途--所需要的只是適用於指定媒體的樣式,並且無需改變文檔中的任何內容。
本章的主要內容如下:
* 什麼是CSS?
* 如何將樣式單與文檔關聯
* 怎樣選擇元素
* 繼承父字體的大小
* 級聯過程
* 在CSS樣式單中使用注釋
* CSS單位
* 塊、內聯和列表項元素
* 字體屬性
* 顏色屬性
* 背景屬性
* 文本屬性
* 框屬性
12.1 什麼是CSS?
級聯樣式單(Cascading Style Sheets,以下簡稱CSS)是1996年作為把有關樣式屬性信息如字體和邊框加到HTML文檔中的標准方法而提出來的。但是,CSS與XML結合的確比與HTML結合得更好,因為HTML承擔著CSS標志和HTML標志之間向後兼容的任務。例如,要正確地支持CSS的nowrap屬性就要求廢除HTML中非標准的但又是經常使用的NOWRAP元素。由於XML元素沒有任何預定義的格式規定,所以不會限制何種CSS樣式只能用於何種元素。
一個CSS樣式單就是一組規則(rule)。每個規則給出此規則所適用的元素的名稱,以及此規則要應用於那些元素的樣式。例如,考察清單12-1,它是一首詩的CSS樣式單。此樣式單有五個規則。每個規則有一個選擇符--規則所應用的元素的名稱--和一組適用於此元素實例的屬性。第一個規則說明POEM元素應以塊的形式(Display:block)顯示其內容。第二個規則說明TITLE元素應以16磅(font-size:16pt)、粗體(font-weight:bold)將其內容顯示在塊中(Display:block)。第三個規則說明POET元素應通過自身顯示在塊中(Display:block),並且與緊隨其後的下一塊相距10個像素(margin-bottom:10px)。第四個規則與第三個相同,所不同的只是前者應用於STANZA元素。最後,第五個規則只簡單地說明VERSE元素也是顯示在自己的塊中。
清單12-1:用於詩作的CSS樣式單
POEM { display: block }
TITLE { display: block; font-size: 16pt; font-weight: bold }
POET { display: block; margin-bottom: 10px }
STANZA { display: block; margin-bottom: 10px }
VERSE { display: block }
在1998年,W3C公布了一個修訂的、詳述的CSS規范,稱之為CSS2(CSS2)。同時,他們又把原來的CSS改名為CSS1(CSS1)。CSS2幾乎是CSS1的超集,只有少部分不同,當遇到這些不同處時,我將給出注解。換句話說,CSS2是在CSS1的基礎上增添了音頻樣式單、媒體類型、特性選擇符和其他新的功能。因此,本章涉及到的幾乎每個例子既適用於CSS1,也適用於CSS2。在下一章中,將把CSS2看作CSS1的擴充來加以介紹。
Netscape Navigator 4.0和Internet Explorer 4.0及5.0支持CSS1的各部分。遺憾的是,對同一部分往往並非同時支持。Mozilla 5.0被認為對CSS1和大多數CSS2提供非完全的支持。Internet Explorer 5.0比Internet Explorer 4.0做得更好,可是它仍失去一些主要部分,特別是有關框模型和偽元素的部分。我將試圖指出某種浏覽器有特別嚴重問題的地方。
12.2 樣式單與文檔的鏈接
要真正地使清單12-1中的樣式單有意義,就得編寫一個使用該樣式單的XML文檔。清單12-2是用XML標記的來自於Walt Whitman的詩集名著Leaves of Grass中的一首詩。第二行是<?xml-stylesheet?>處理