TD列宽度值不与固定表布局工作

  • 本文关键字:表布局 工作 TD html css
  • 更新时间 :
  • 英文 :


我有以下表格结构:

<table class="tableStyle">
<tr>
    <td width="20px">col1</td>
    <td width="50px">col2</td>
    <td width="50px">col3</td>
    <td width="15px">col4</td>
    <td width="25px">col5</td>
    <td width="20px">col6</td>
    <td width="20px">col7</td>
    <td width="20px">col8</td>
</tr>
</table>

CSS类定义为:

.tableStyle{
table-layout:fixed;
margin: 0 auto; width: 960px;
}

问题是所有的列都显示相同的宽度,尽管我显式地定义了每个列的宽度。

为什么上面的宽度值不工作?有什么建议,使其与固定表布局工作?

" old " width属性不需要一个单位,它期望类似于width="20"

然而,定义一个表的"最正确"的方式是这样的:

<table>
    <colgroup>
        <col style="width:20px" />
        <col style="width:50px" span="2" />
        <col style="width:15px" />
        <col style="width:25px" />
        <col style="width:20px" span="3" />
    </colgroup>
    <tbody>
        <tr>
            <td>col1</td>
            <td>col2</td>
            <td>col3</td>
            <td>col4</td>
            <td>col5</td>
            <td>col6</td>
            <td>col7</td>
            <td>col8</td>
        </tr>
    </tbody>
</table>

这对于大的表格特别有效,因为浏览器只需要读取<colgroup>元素就知道整个表格应该如何布局,而不需要根据单个单元格样式计算宽度。

你必须使用:

<td width="20">

<td style="width: 20px">

您应该使用属性width而不使用单位px。可能有一些现代浏览器接受带有单位的属性,但不是正确的方式!

你有一个类似的问题在这另一个Stackoverflow的情况:

width属性不支持用px表示td,如果你想用px表示宽度,你需要提供如下的css

<td style="width: 20px">

似乎是我想要的。

.tableStyle{
table-layout:fixed;
margin: 0 auto; width: 960px;
}
http://jsfiddle.net/9x56E/

建议这样做

<table class="tableStyle">
<tr>
    <td>col1</td>
    <td>col2</td>
    <td>col3</td>
    <td>col4</td>
    <td>col5</td>
    <td>col6</td>
    <td>col7</td>
    <td>col8</td>
</tr>
</table>
CSS

.tableStyle{
table-layout:fixed;
margin: 0 auto; width: 960px;
  background: #ddd;
}
td:nth-child(1n) {
  width: 20px;
  background: #876342;
}
td:nth-child(3n+1) {
  width: 100px;
}
演示

与其将宽度添加到td上,不如尝试使用css将其添加到th上。

例如,

<table>
    <tr>
        <th class="column-1">Heading 1</th>
        <th class="column-2">Heading 2</th>
        <th class="column-3">Heading 3</th>
    </tr>
    <tr>
        <td>TD 1</td>
        <td>TD 2</td>
        <td>TD 3</td>
    </tr>
</table>
CSS

.column-1 {
    width: 50%;
}
.column-2 {
    width: 25%;
}
.column-3 {
    width: 25%;
}

我有完全相同的问题,发现这个资源很有用:

https://css-tricks.com/fixing-tables-long-strings/

最新更新