網(wǎng)頁設(shè)計(jì)中的合并邊框布局

合并單元格邊框

合并單元格模型基本上描述了沒有單元格間隔時(shí)HTML表通常如何布局,不過,這比分隔邊框模型要更復(fù)雜一些。以下規(guī)則使合并單元格邊框與分隔單元格邊框有所區(qū)別:

display值為table或inline-table的元素不能有任何內(nèi)邊距,不過它們可以有外邊距。因此,表的外圍邊框與其最外單元格的邊界之間不會(huì)有任何間隔。

邊框可以應(yīng)用到單元格。行、行組、列和列組。表元素本身通常都有一個(gè)邊框。

單元格邊框之間絕對(duì)不會(huì)有任何間隔。實(shí)際上,如果邊框相鄰,就會(huì)相互合并,使得實(shí)際上只畫其中一個(gè)合并邊框。這有些類似于外邊距合并,即最大的一個(gè)外邊距“勝出”。單元格邊框合并時(shí),“最有意思的”邊框會(huì)勝出。

一旦合并,單元格之間的邊框會(huì)在單元格間的假想表格線上居中。

下面兩節(jié)將更詳細(xì)地討論后兩點(diǎn)。

合并邊框布局

為了更好地理解合并邊框模型如何工作,下面來看一個(gè)表行的布局,如圖11-8所示。

不出所料,每個(gè)單元格的內(nèi)邊距和內(nèi)容寬度都在邊框以內(nèi),對(duì)于單元格之間的邊框,-半邊框放在兩個(gè)單元格之間表格線的一邊,另一半放在另一邊,不論哪一種情況,沿著各單元格邊界只會(huì)畫一個(gè)邊框。你可能認(rèn)為總是在表格線兩邊分別畫各單元格的一半邊框(譯注2)[2],但實(shí)際上并不是這樣。

例如,假設(shè)中間單元格的實(shí)線邊框是綠色,外面兩個(gè)單元格的實(shí)線邊框是紅色。中間單元格左右兩邊的邊框(與外面兩個(gè)單元格的相鄰邊框合并)都將是綠色,或都是紅色,這取決于哪個(gè)邊框勝出。下一節(jié)我們將討論如何區(qū)分哪個(gè)邊框會(huì)取勝。

網(wǎng)頁設(shè)計(jì)人員可能已經(jīng)注意到,外邊框超出了表的寬度。這是因?yàn)椋谶@個(gè)模型中,寬度只包含表邊框的一半。另一半在此距離之外,落在外邊距中。看上去可能有些怪異,不過模型就是這樣定義的。

規(guī)范提供了一個(gè)布局公式,為了方便大家學(xué)習(xí),以下列出這個(gè)公式:

row width ={0.5 * border-widthO}+ padding-left1 + width1 + padding-right1 + border-width1 + padding-left2 +...+ padding-rightn +(0.5 * border-widthn)

各border-width是指單元格與下一個(gè)單元格之間的邊框,因此,border-width3

是指第3個(gè)和第4個(gè)單元格之間的邊框。值n代表該行中的單元格總數(shù)。這個(gè)機(jī)制有一個(gè)小小的例外。在開始建立一個(gè)合并邊框表的布局時(shí),網(wǎng)頁設(shè)計(jì)人員會(huì)為表本身計(jì)算一個(gè)初始的左右邊框。這是這樣完成的:首先檢査表中第一行第一個(gè)單元格的左邊框,并取該邊框?qū)挾鹊囊话胱鳛楸淼某跏甲筮吙驅(qū)挾?。用戶代理再檢査第一行中最后一個(gè)單元格的右邊框,取其寬度的一半來設(shè)置表的初始右邊框?qū)挾?。?duì)于第一行之后的其他行,如果其左或右邊框比初始邊框?qū)挾雀鼘?,則會(huì)延伸到表的外邊距區(qū)中。

如果邊框的寬度是一個(gè)奇數(shù)(即奇數(shù)個(gè)昆示元素,如像素、打印點(diǎn)等),網(wǎng)站建設(shè)人員必須決定如何將邊框在表格線上居中。它可能會(huì)移動(dòng)該邊框,使之稍稍偏離中心,或者將寬度向上或向下調(diào)整為一個(gè)偶數(shù)(偶數(shù)個(gè)顯示元素),或者采用其他看上去合理的做法。

網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷咨詢專線:0871-63535511(點(diǎn)擊可一鍵撥號(hào))