2010-09-08 28 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;在你的桌子上。