2010-09-08 71 views
9

假設我有一個聲明寬度爲750px的HTML表格。它有5列,每列有50px的寬度,用css聲明(所有td的寬度都是50px)。顯然,列的寬度總和爲250px,小於750px。計算列寬與列的css聲明寬度不同。瀏覽器如何決定寬度?

當瀏覽器呈現表格時,每列都有不同的計算寬度。我有一列只有5個空格,但計算寬度超過100像素(比5  多很多)。

所有列均符合其包含的文本以及一些額外的空格。標記中沒有硬編碼的列寬。在'td'的CSS中只有一個50像素。

瀏覽器如何計算每列的渲染寬度?

回答

4

當您設置表列的寬度時,它只是一個建議的最小寬度,瀏覽器會嘗試在可能的情況下進行響應。列的實際寬度是根據其內容的大小計算的,在列之間均勻分配剩餘空間。

如果任何列最終會比指定的寬度窄,那麼如果其他列中有可用空間,瀏覽器會嘗試調整它,但在您的情況下列已經超過最小值。

計算單元大小的實際算法因瀏覽器而異,這意味着根據您使用的瀏覽器,列最終會略有不同。

+0

每列中最長的內容小於計算出的寬度。每列都有多餘的空格。沒有列比我的寬度窄。瀏覽器是否會嘗試在每列中添加額外的空格*等於*以獲得表寬度?關鍵字同樣在這裏。我有一個只有硬編碼空格的列,沒有文本,但是它的列結構比空格的總和還要寬。 – 2010-09-08 22:13:54

+0

@Tony_Henrich:是的,根據瀏覽器中的一些未知算法,額外空間在列之間平均分配或按比例分配。 – Guffa 2010-09-08 22:24:24

0

這被稱爲箱式模型。填充和邊框被添加到元素寬度。因此,padding: 10px; width: 50px; border: 1px solid black;的DIV元素實際上是72像素的寬度。我希望你的TD有邊界或填充?

+1

處理表格時邊框崩潰也會發揮作用。 – You 2010-09-08 20:45:49

+0

沒有邊界。沒有填充。沒有間距。 – 2010-09-10 16:11:55

1

瀏覽器嘗試將單元格放入表格寬度中,根據需要展開/縮小td

因此,您將表格設置爲750px,但只給出了250px的寬度。在這種情況下,瀏覽器將採用傳統的間隔方案,根據每個單元格中的內容,嘗試均勻分隔單元格。

你可以閱讀更多關於這是如何工作here

13

您需要使用表格式樣式。有3種可能的值:

  • auto。默認值。寬度取決於內容。
  • 固定。取決於CSS中指定的寬度。
  • 繼承。繼承其父項的值。

在你的情況下,你需要使用table-layout:fixed;在你的桌子上。