在HTML中,很容易知道哪些元素屬于表,因為像tr和td之類元素的處理已經(jīng)內(nèi)置在瀏覽器中。與此不同,在XML中則沒有辦法從根本上知道哪些元素可能是表的一部分。
因此引人了一組display值。
這一章中,我們只討論網(wǎng)頁設(shè)計與表有關(guān)的值,因為其他值已經(jīng)在其他章節(jié)討論過。與表相關(guān)的值可以總結(jié)如下:
table
這個值指定一個元素定義了一個塊級表。因此,它定義了一個生成塊框的矩形塊。相應(yīng)的HTML元素當(dāng)然是table。
display
值:
none | inline | block | inline-block | list-item | run-in | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | inherit
初始值:inline
應(yīng)用于:所有元素
繼承性:無
計算值:對于浮動,定位和根元素,計算值可變(見CSS2.1第9.7節(jié)否則,根據(jù)指定確定
說明:網(wǎng)站建設(shè)中還有值compact和marker,不過由于缺乏廣泛的支持,在 CSS2.1中已經(jīng)去掉
inline-table
這個值指定一個元素定義了一個行內(nèi)級表。這說明,該元素定義了一個生成行內(nèi)框的矩形塊,與之最接近的非表值是inline-block。最接近的HTML元素為table,不過,默認(rèn)情況下HTML表不是行內(nèi)元素。
table-row
這個值指定一個元素是一個單元格的行。相應(yīng)的HTML元素是tr元素。
table-row-group
這個值指定一個元素是一個或多個行的組。相應(yīng)的HTML值是tbody。
table-header-group
這個值與table-row-group非常相似,只是視覺格式化方面有所不同,標(biāo)題行組總是在所有其他行和行組之前顯示。打印時,如果一個表需要多頁打印,用戶代理可以在各頁頂端重復(fù)標(biāo)題行,規(guī)范沒有定義如果為多個元素指定table-header-group值會發(fā)生什么情況。標(biāo)題組可以包含多個行。與之對應(yīng)的HTML元素是thead。
table-footer-group
這個值與table-header-group很類似,不過腳注行組總是在所有其他行之后顯示,如果最下面有頁腳標(biāo)S,要在該總標(biāo)題之前顯示。打印時,如果一個表需要多頁打印,用戶代理可以在各頁底端重復(fù)頁腳行。規(guī)范沒有定義如果為多個元素指定table-foo.ter-group值會有什么結(jié)果。與之對應(yīng)的HTML元素是tfoot。
table-column
這個值聲明元素描述了一個單元格的列。按網(wǎng)站建設(shè)的術(shù)語來說,有這個display值的元素并不顯示,就好像它的display值為none—樣。之所以存在這個值,主要是為了幫助定義列中單元格的表示。相應(yīng)的HTML元素是col元素。
table-column-group
網(wǎng)站建設(shè)這個值聲明一個元素是一個或多個列的組。類似于table-column元素,table- column-group元素也不顯示,不過這個值有助于定義列組中元素的表示。相應(yīng)的HTML元素是colgroup元素。
table-cell
這個值指定一個元素表示表中的單個單元格。HTML元素th和td都屬于table- eell元素。
table-caption
這個值定義一個表的總標(biāo)題。網(wǎng)站建設(shè)沒有定義如果多個元素的display值都為caption時會發(fā)生什么情況,不過CSS確實(shí)明確地警告,“……創(chuàng)作人員不要在一個表或行內(nèi)表元素中放多個有display: caption的元素?!?/p>
下面從附錄C給出的示例HTML 4.0樣式表中節(jié)取一部分,對這些值的一般效果做了一個簡短的總結(jié):
table {display: table;}
tr {display: table-row;}
thead {display: table-header-group;}
tbody {display: table-row-group;}
tfoot {display: table-footer-group;}
col {display: table-column;}
colgroup {display: table-column-group;}
td, th {display: table-cell;}
caption {display: table-caption;}
在XML中,默認(rèn)地元素沒有顯示語義,所以這些值非常有用??紤]以下標(biāo)記:
<scores>
<headers>
<label>Team</label> clabel>Score</label>
</headers>
<garne sport="MLB" league="NL">
<name>Reds</name>
<score>8</score>
</team>
<name>Cubs</name>
<score>5</score>
</team>
</ganle>
</scores>
可以用以下樣式將其格式化為一種表格形式:
scores {display: table;}
headers {display: table-header-group;}
game {display: table-row-group;}
team {display: table-row;}
label, name., score {display: table-cell;}
然后根據(jù)需要對各個單元格應(yīng)用樣式,例如,將label元素變?yōu)榇煮w,對scores右對齊。
注意:盡管理論上可以為任何HTML元素指定與表有關(guān)的display值,不過在IE7之前,Internet Explorer并不支持這個功能,