網(wǎng)頁設計中的高度和對齊

  • 2019-05-24 13:57:13
  • 閱讀次數(shù):
  • 作者:盈嵐科技小編
  • 來源:http://51zuanshi.com.cn

高度

網(wǎng)頁設計時,確定表的寬度要花這么大功夫,現(xiàn)在你可能想知道計算高度又會多復雜。實標上,在CSS 中,高度計算相當簡單,不過瀏覽器開發(fā)人員可能不這么認為。

最容易的一種情況是,直接由height屬性顯式設置高度。在這種情況下,表的高度就由height值確定。這說明表可能比行高總和高或矮,不過2006年4月11日發(fā)布的CSS 2.1規(guī)范草案指出,將height看作是表框的最小高度。對于這些情況,CSS2.1規(guī)范明確地拒絕定義會發(fā)生什么,而只是指出CSS的將來版本可能解決這個問埋。用戶代理可以擴展或收縮表中的表行來適應表的高度,也可以在表框中留白或者采取其他完全不同的做法。這完全由各個用戶代理決定。

如果表的高度是auto,其高度則是表中所有行的行高再加上所有邊框和單元格間隔的總和。要確定各行的高度,用戶代理需要完成一個與確定列寬類似的過程。它要計算各單元格內容的最小和最大高度,然后使用這些最小和最大高度得出行的最小和最大高度。確定了所有行的最小和最大高度后,用戶代理再得出各行的高度應當是多少,把這些行加在一起,然后使用這個計算確定表的高度。這與行內布局很類似,只不過對于結果不那么確定。

除了處理有明確高度的表以及表中的行高,還可以增加以下內容,這是CSS2.1中沒有定義的:

表單元格高度為百分數(shù)時的效果

表行和行組高度為百分數(shù)時的效果

跨行單元格如何影響所跨行的高度(除了這些行必須包含該跨行單元格)

可以看到,表的高度計算在很大程度上留給用戶代理來決定,歷史證明,各用戶代理很可能有不同的做法,所以你要盡可能避免設置高度。

對齊

有意思的是,相對于單元格和行的高度,定義單元格中內容的對齊要容易得多。甚至垂直對齊也很容易定義(垂直對齊很容易影響行高)。

水平對齊是最簡單的。要讓一個單元格中的內容對齊,可以使用text-align屬性。實際上,單元格會處理為一個塊級框,其中的所有內容都根據(jù)text-align值對齊(有關text-align的詳細內容見第6章)。

要將一個表單元格中的內容垂直對齊,可以使用vertical-align屬性。它使用的很多值與垂直對齊行內內容是一樣的,不過應用到表單元格時這些值的含義有所變化。下面對三種最簡單的情況做個總結:

top

單元格內容的頂端與其行頂端對齊;對于跨行單元格,單元格內容的頂端與其所跨的第一行的頂端對齊。

bottom

單元格內容的底端與其行底端對齊,對于跨行單元格,單元格內容的底端與其所跨的最后一行的底端對齊。

middle

單元格內容的中間與其行中間對齊;對于跨行單元格,單元格內容的中間與其所跨行的中間對齊。

這三種情況見圖使用了以下樣式和標記:

table{table-layout: auto; width: 20em;

border-collapse: separate; border-spacing: 3px;}

td {border: 1px solid; background: silver; padding: 0;}

div {border: 1px dashed gray; background: white;}

#r1c1 {vertical-align: top; height: l0em;}

#r1c2 {verCical-align: middle;}

#rlc3 {vertical-align: bottom;}

<table>

<tr>

<td id="r1c1">

<div>

The contents of this cell are top-aligned.

</div>

</td>

<td id="r1c2">

<div>

The contents of this cell are middle-aligned.

</div>

</ta>

<td id="r1c3">

The contents of this cell are bottom-aligned.

</div>

</cd>

</tr>

</table>

設計網(wǎng)頁的時候,在上述各種情況下,會自動地增加單元格本身的內邊距完成對齊,來達到所需的效果。圖11-13的第一個單元格中,單元格的下內邊距修改為等于單元格框的高度與單元格中內容的高度之差。對于第二個單元格,單元格的上下內邊距重置為相等,從而將單元格的內容垂直居中。最后一個單元格中,單元格的上內邊距得到修改。

第4個可能的對齊值是baseline,這比前三個值要稍微復雜一些:

baseline

網(wǎng)頁設計時,單元格的基線與其行的基線對齊,對于跨行單元格,該單元格的基線與所跨的第一行的基線對齊。

行的基線由該行所有單元格中最低初始單元格基線定義(也就是第一個文本行的基線)。因此,在圖11-14中,行的基線由第三個單元格定義,這個單元格初始基線最低。前兩個單元格則將其第一個文本行的基線與該行基線對齊。

與頂端對齊、居中對齊和底端對齊類似,基線對齊的單元格內容也是通過調整單元格的上下內邊距來放置,如果一行中的所有單元格都不是基線對齊,那么這一行甚至沒有基線,它也不需要有基線。

如果某些單元格是基線對齊,則確定該行的基線,并放置這些基線對齊單元格的內容。

放置所有頂端對齊單元格的內容。行現(xiàn)在有了一個臨時高度,由已經(jīng)放置了內容的單元格的最低單元格底端確定。

如果剩下的單元格是居中對齊或底端對齊,而且內容高度大于臨時行高,行高則增加到可以包含其中最高的單元格。

放置所有余下單元格的內容。如果單元格內容的高度比行高小,則增加單元格的內邊距,使之適應行高。

vertical-align值sub、super, text-top和 text-bottom應用到表單元格時會被忽略。

th {vertical-align: text-top;}

當前文章標題:網(wǎng)頁設計中的高度和對齊

當前URL:http://51zuanshi.com.cn/news/wzzz/3029.html

上一篇:網(wǎng)頁設計中的自動布局

下一篇:網(wǎng)頁設計中的列表類型

網(wǎng)站建設、網(wǎng)絡營銷咨詢專線:181-8386-5875(點擊可一鍵撥號)