合并單元格模型基本上描述了沒有單元格間隔時HTML表通常如何布局,不過,這比分隔邊框模型要更復雜一些。以下規則使合并單元格邊框與分隔單元格邊框有所區別:
display值為table或inline-table的元素不能有任何內邊距,不過它們可以有外邊距。因此,表的外圍邊框與其最外單元格的邊界之間不會有任何間隔。
邊框可以應用到單元格。行、行組、列和列組。表元素本身通常都有一個邊框。
單元格邊框之間絕對不會有任何間隔。實際上,如果邊框相鄰,就會相互合并,使得實際上只畫其中一個合并邊框。這有些類似于外邊距合并,即最大的一個外邊距“勝出”。單元格邊框合并時,“最有意思的”邊框會勝出。
一旦合并,單元格之間的邊框會在單元格間的假想表格線上居中。
下面兩節將更詳細地討論后兩點。
為了更好地理解合并邊框模型如何工作,下面來看一個表行的布局,如圖11-8所示。
不出所料,每個單元格的內邊距和內容寬度都在邊框以內,對于單元格之間的邊框,-半邊框放在兩個單元格之間表格線的一邊,另一半放在另一邊,不論哪一種情況,沿著各單元格邊界只會畫一個邊框。你可能認為總是在表格線兩邊分別畫各單元格的一半邊框(譯注2)[2],但實際上并不是這樣。
例如,假設中間單元格的實線邊框是綠色,外面兩個單元格的實線邊框是紅色。中間單元格左右兩邊的邊框(與外面兩個單元格的相鄰邊框合并)都將是綠色,或都是紅色,這取決于哪個邊框勝出。下一節我們將討論如何區分哪個邊框會取勝。
網頁設計人員可能已經注意到,外邊框超出了表的寬度。這是因為,在這個模型中,寬度只包含表邊框的一半。另一半在此距離之外,落在外邊距中??瓷先タ赡苡行┕之?,不過模型就是這樣定義的。
規范提供了一個布局公式,為了方便大家學習,以下列出這個公式:
row width ={0.5 * border-widthO}+ padding-left1 + width1 + padding-right1 + border-width1 + padding-left2 +...+ padding-rightn +(0.5 * border-widthn)
各border-width是指單元格與下一個單元格之間的邊框,因此,border-width3
是指第3個和第4個單元格之間的邊框。值n代表該行中的單元格總數。這個機制有一個小小的例外。在開始建立一個合并邊框表的布局時,網頁設計人員會為表本身計算一個初始的左右邊框。這是這樣完成的:首先檢査表中第一行第一個單元格的左邊框,并取該邊框寬度的一半作為表的初始左邊框寬度。用戶代理再檢査第一行中最后一個單元格的右邊框,取其寬度的一半來設置表的初始右邊框寬度。對于第一行之后的其他行,如果其左或右邊框比初始邊框寬度更寬,則會延伸到表的外邊距區中。
如果邊框的寬度是一個奇數(即奇數個昆示元素,如像素、打印點等),網站建設人員必須決定如何將邊框在表格線上居中。它可能會移動該邊框,使之稍稍偏離中心,或者將寬度向上或向下調整為一個偶數(偶數個顯示元素),或者采用其他看上去合理的做法。
當前文章標題:網頁設計中的合并邊框布局
當前URL:http://www.ccaudelo.com/news/wzzz/border-layout.html
上一篇:處理空單元格
下一篇:網頁設計中的邊框合并