CSS 基础教程
CSS 盒子模型
CSS 高级教程
CSS3 特点
CSS3 示例
CSS3 参考

CSS 表格

在本教程中,您将学习如何使用 CSS 设置 HTML 表格的样式。

使用 CSS 设置表格样式

表格通常用于显示表格数据,例如财务报告。

但是当您创建一个没有任何样式或属性的 HTML 表格 时,浏览器会显示它们而没有任何边框。 使用 CSS,您可以极大地改善表格的外观。

CSS 提供了几个属性,允许您控制表格元素的布局和表示。 在下一节中,您将看到如何使用 CSS 创建优雅且一致的表格。

为表格添加边框

CSS border 属性是定义表格边框的最佳方式。

以下示例将为 <table>, <th>, 和 <td> 元素设置黑色边框。

table, th, td {
    border: 1px solid black;
}

默认情况下,浏览器会在表格周围以及所有单元格周围绘制边框,中间有一些空间,这会导致双边框。 要摆脱这种双边框问题,您可以简单地折叠相邻的表格单元格边框并创建干净的单线边框。

让我们看一下下面的插图,了解边框是如何应用于表格的。

Table Border Model Illustration

折叠表格边框

在 CSS 中设置表格单元格的边框有两种不同的模型:separatecollapse

在默认的分离边框模型中,每个表格单元格都有自己不同的边框,而在折叠边框模型中,相邻的表格单元格共享一个共同的边框。 您可以使用 CSS border-collapse 属性为 HTML 表格设置边框模型。s

以下样式规则将折叠表格单元格边框并应用一个像素的黑色边框。

table {
    border-collapse: collapse;
}
th, td {
    border: 1px solid black;
}

注意: 您也可以通过将 CSS border-spacing 属性的值设置为 0 来去除表格单元格边框之间的空格。但是,它只是去除空格,而不像设置 < code>border-collapse 到 collapse


调整表格内空间

默认情况下,浏览器会创建足够大的表格单元格以包含单元格中的数据。

要在表格单元格内容和单元格边框之间添加更多空间,您可以简单地使用 CSS padding 属性。 让我们试试下面的例子,看看它是如何工作的:

th, td {
    padding: 15px;
}

如果表格的边框是分开的(这是默认设置),您还可以使用 CSS border-spacing 属性调整单元格边框之间的间距。

以下样式规则在表格内的所有边框之间应用 10 像素的间距:

table {
    border-spacing: 10px;
}

设置表格宽度和高度

默认情况下,表格将呈现足够宽和高以包含其所有内容。

但是,您也可以使用 widthheight CSS 属性显式设置表格及其单元格的宽度和高度。 以下示例中的样式规则将表格的宽度设置为 100%,将表格标题单元格的高度设置为 40px。

table {
    width: 100%;
}
th {
    height: 40px;
}

控制表格布局

表扩展和收缩以容纳其中包含的数据。 这是默认行为。 随着数据在表内填充,只要有空间,它就会继续扩展。 但是,有时需要为表格设置固定宽度以管理布局。

您可以借助 CSS table-layout 属性来完成此操作。 此属性定义用于布局表格单元格、行和列的算法。 此属性采用以下两个值之一:

  • auto — 使用自动表格布局算法。 使用此算法,表格及其单元格的宽度会调整以适应内容。 这是默认值。
  • fixed — 使用固定表格布局算法。 使用这种算法,表格的水平布局不依赖于单元格的内容; 它仅取决于表格的宽度、列的宽度以及边框或单元格间距。 它通常比自动更快。

以下示例中的样式规则指定 HTML 表格使用固定布局算法进行布局,并具有 300 像素的固定宽度。 让我们尝试一下,看看它是如何工作的:

table {
    width: 300px;
    table-layout: fixed;
}

提示:您可以通过为 table-layout 属性指定值 fixed 来优化表格呈现性能。 此属性的固定值会导致表格一次呈现一行,从而以更快的速度为用户提供信息。

注意: 在大表格上没有 table-layout 属性的 fixed 值,用户将看不到表的任何部分,直到浏览器呈现整个表。


对齐表格单元格内的文本

您可以水平或垂直对齐表格单元格内的文本内容。

单元格内容的水平对齐

对于表格单元格内的文本水平对齐,您可以像使用其他元素一样使用 text-align 属性。 您可以将文本左对齐、右对齐、居中对齐或对齐。

以下样式规则将左对齐 <th> 元素内的文本。

th {
    text-align: left;
}

注意: <td> 元素内的文本默认左对齐,而 <th> 元素内的文本默认居中对齐并以粗体显示。

单元格内容的垂直对齐

同样,您可以使用 CSS vertical-align 属性将 <th><td> 元素内的内容垂直对齐到顶部、底部或中间。 默认垂直对齐方式是中间。

以下样式规则将垂直底部对齐 <th> 元素内的文本。

th {
    height: 40px;
    vertical-align: bottom;
}

控制表格标题的位置

您可以使用 CSS caption-side 属性设置表格标题的垂直位置。

标题可以放在表格的顶部或底部。 默认位置是顶部。

caption {
    caption-side: bottom;
}

提示:要更改表格标题文本的水平对齐方式(例如左或右),您可以简单地使用 CSS text-align 属性,就像使用普通文本一样。


处理空单元格

在默认使用单独边框模型的表格中,您还可以使用 empty-cells CSS 属性控制没有可见内容的单元格的呈现。

此属性接受 showhide 值。 默认值为 show,它像普通单元格一样渲染空单元格,但如果指定了 hide 值,则不会在空单元格周围绘制边框或背景。 让我们尝试一个例子来了解它是如何工作的:

table {
    border-collapse: separate;
    empty-cells: hide;
}

注意:在表格单元格内放置一个不间断空格 (&nbsp;) 使其不为空。 因此,即使该单元格看起来是空的,hide 值也不会隐藏边框和背景。


创建斑马条纹表格

为交替行设置不同的背景颜色是一种流行的技术,可以提高具有大量数据的表的可读性。 这通常称为对表格进行斑马条纹处理。

您可以使用 CSS :nth-child() 伪类 选择器简单地实现此效果。

以下样式规则将突出显示表格正文中的每个奇数行。

tbody tr:nth-child(odd) {
    background-color: #f2f2f2;
}

斑马条纹表格通常如下图所示。

注意: :nth-child() 伪类根据它们在一组兄弟中的位置来选择元素。 它可以采用数字、关键字 even 或 odd 或 xn+y 形式的表达式,其中 x 和 y 是整数(例如 1n、2n、2n+1、...)作为参数。


响应式表格

表格本质上不是响应式的。 但是,为了支持移动设备,您可以通过在小屏幕上启用水平滚动来增加对表格的响应式能力。 为此,只需使用 <div> 元素包装您的表格并应用样式 overflow-x: auto; ,如下所示:

<div style="overflow-x: auto;"> 
    <table>
        ... table content ...
    </table>
</div>
Advertisements