table-layout

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

table-layout CSS 属性设置用于布局 <table> 单元格、行和列的算法。

试一试

table-layout: auto;
width: 150px;
table-layout: fixed;
width: 150px;
table-layout: auto;
width: 100%;
table-layout: fixed;
width: 100%;
<section class="default-example" id="default-example">
  <table class="transition-all" id="example-element">
    <tr>
      <th>Name</th>
      <th>Location</th>
    </tr>
    <tr>
      <td>Lion</td>
      <td>Africa</td>
    </tr>
    <tr>
      <td>Norwegian Lemming</td>
      <td>Europe</td>
    </tr>
    <tr>
      <td>Seal</td>
      <td>Antarctica</td>
    </tr>
    <tr>
      <td>Tiger</td>
      <td>Asia</td>
    </tr>
  </table>
</section>
table {
  border: 1px solid #113399;
}

th,
td {
  border: 2px solid #aa1199;
  padding: 0.25rem 0.5rem;
}

语法

css
/* Keyword values */
table-layout: auto;
table-layout: fixed;

/* Global values */
table-layout: inherit;
table-layout: initial;
table-layout: revert;
table-layout: revert-layer;
table-layout: unset;

auto

使用自动表格布局算法。表格及其单元格的宽度会根据内容进行调整。大多数浏览器默认使用此算法。

fixed

使用固定表格布局算法。使用此关键字时,表格的宽度需要使用 width 属性显式指定。如果 width 属性的值设置为 auto 或未指定,浏览器将使用自动表格布局算法,在这种情况下,fixed 值无效。
固定表格布局算法比自动布局算法更快,因为表格的水平布局仅取决于表格的宽度、列的宽度以及边框或单元格间距。水平布局不取决于单元格的内容,因为它仅取决于显式设置的宽度。

在固定表格布局算法中,每列的宽度确定如下:

  • 具有显式宽度的列元素设置该列的宽度。
  • 否则,第一行中具有显式宽度的单元格确定该列的宽度。
  • 否则,该列从共享的剩余水平空间获取宽度。

使用此算法,一旦第一行表格数据被下载和分析,整个表格就可以被渲染。这可以比“自动”布局方法加快渲染时间,但后续单元格内容可能无法适应提供的列宽。单元格使用 overflow 属性来确定是否裁剪任何溢出内容,但仅当表格具有已知宽度时;否则,它们不会溢出单元格。

正式定义

初始值auto
应用于tableinline-table 元素
继承性
计算值同指定值
动画类型离散

正式语法

table-layout = 
auto |
fixed

示例

带文本溢出的固定宽度表格

此示例使用固定表格布局,结合 width 属性,来限制表格的宽度。text-overflow 属性用于对过长而不适合的单词应用省略号。如果表格布局是 auto,即使指定了 width,表格也会增长以适应其内容。

HTML

html
<table>
  <tr>
    <td>Ed</td>
    <td>Wood</td>
  </tr>
  <tr>
    <td>Albert</td>
    <td>Schweitzer</td>
  </tr>
  <tr>
    <td>Jane</td>
    <td>Fonda</td>
  </tr>
  <tr>
    <td>William</td>
    <td>Shakespeare</td>
  </tr>
</table>

CSS

css
table {
  table-layout: fixed;
  width: 120px;
  border: 1px solid red;
}

td {
  border: 1px solid blue;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

结果

规范

规范
层叠样式表级别 2
# 宽度布局

浏览器兼容性

另见