六维教程

CSS 表格样式

数据展示离不开表格。价格表、成绩单、订单列表,表格天生适合结构化数据。默认表格灰扑扑又挤在一起,CSS 能让它整齐清爽。

表格的基本结构

一个标准表格由 table、thead、tbody、tr、th、td 组成。

<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>城市</th>
      <th>分数</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>北京</td>
      <td>92</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>上海</td>
      <td>85</td>
    </tr>
  </tbody>
</table>

th 是表头,默认加粗居中。td 是普通单元格。

合并边框

默认情况下每个单元格有自己的边框,单元格之间会有双线缝隙。用 border-collapse 把它们合并成单线,是表格排版的第一步。

table {
  border-collapse: collapse;
}

collapse 合并边框,separate 是默认的分离状态。绝大多数场景都用 collapse,表格看起来干净利落。

给表格加边框和内边距

table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  border: 1px solid #ddd;
  padding: 10px 14px;
  text-align: left;
}

宽度撑满容器,边框浅灰,单元格留出内边距,表格立刻清爽。表头想居中就单独设 text-align: center

斑马纹让行更好读

数据多的时候,隔行变色能避免看串行。

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

nth-child(odd) 选奇数行,even 选偶数行,这是 CSS 伪类 里的典型应用。斑马纹刷完,长表格阅读体验好很多。

表头固定样式

表头颜色加深一点,与数据区区分开。

thead th {
  background: #3498db;
  color: #fff;
  font-weight: bold;
}

深色表头配白色文字,表格有了清晰的视觉层次。

悬停高亮

鼠标移到哪一行就高亮哪一行,方便定位。

tbody tr:hover {
  background: #eaf4fd;
}

和斑马纹搭配时注意顺序,hover 样式写在后面,悬停时才能盖过斑马纹。

常用布局属性

table-layout 控制列宽算法。

table {
  table-layout: fixed;
}

默认 auto 会根据内容自动计算列宽,内容长列就宽。fixed 按第一行决定列宽,之后各行都按这个宽度渲染,性能好而且列宽可控。表格列多、数据量大的时候用 fixed 更稳。

小结

表格样式三板斧,border-collapse: collapse 合并边框,th 和 td 统一设置边框和内边距,:nth-child 做斑马纹。再配上表头加深和悬停高亮,数据表格就专业起来了。

上一篇
CSS 列表样式
下一篇
CSS 高级文本效果