📊 什么是CSS表格?

CSS表格是通过HTML和CSS创建的数据展示方式,类似于Excel表格。它由行(横排)和列(竖排)组成,交叉点称为单元格。

想象一下你的课程表:周一到周五是列,上午下午是行,每个格子里的科目就是单元格内容。

表格基本结构

表格标题(caption)
表头(thead)
表体(tbody)
表脚(tfoot)

🔧 创建基本表格

HTML表格由 <table> 标签定义,其中:

  • <tr> 定义行(table row)
  • <td> 定义普通单元格(table data)
  • <th> 定义表头单元格(table header)

简单表格示例

姓名 年龄 城市
张三 28 北京
李四 32 上海
<table> <tr> <th>姓名</th> <th>年龄</th> <th>城市</th> </tr> <tr> <td>张三</td> <td>28</td> <td>北京</td> </tr> <tr> <td>李四</td> <td>32</td> <td>上海</td> </tr> </table>

🎨 CSS表格样式技巧

1. 表格边框设置

使用CSS的border属性为表格添加边框:

/* 给表格和单元格添加边框 */ table { border: 1px solid #ddd; } th, td { border: 1px solid #ccc; padding: 8px; }

💡 提示:使用 border-collapse: collapse; 可以让相邻边框合并为单一边框,视觉效果更整齐!

2. 表格宽度与高度

控制表格整体大小:

/* 设置表格宽度为父元素的100% */ table { width: 100%; } /* 设置表头高度 */ th { height: 50px; } /* 设置单元格最小宽度 */ td { min-width: 100px; }

3. 表格间距控制

调整表格内的空间:

/* 单元格内边距(内容与边框的距离) */ td { padding: 12px 15px; } /* 单元格之间的间距(使用border-spacing) */ table { border-spacing: 10px; /* 仅在border-collapse: separate时有效 */ }

4. 表格文字对齐

控制表格内容的对齐方式:

/* 水平对齐 */ th { text-align: left; /* 左对齐(默认) */ } td { text-align: center; /* 居中 */ } /* 垂直对齐 */ td { vertical-align: top; /* 顶部对齐 */ vertical-align: middle; /* 居中(推荐) */ }

5. 表格颜色与斑马纹

增强表格的可读性和美观性:

/* 表头背景色 */ th { background-color: #3498db; color: white; } /* 斑马纹效果 */ tr:nth-child(even) { background-color: #f2f2f2; } /* 鼠标悬停效果 */ tr:hover { background-color: #e3f2fd; }

6. 表格标题(caption)

为表格添加描述性标题:

HTML使用 <caption>标签添加到<table>标签内的顶部

<table> <caption>员工信息表</caption> <tr> <th>姓名</th> … </tr> </table>

7. 高级表格结构

对于复杂表格,可以使用这些标签:

<table> <caption>销售报表</caption> <thead> <!– 表头区域 –> <tr><th>产品</th>…</tr> </thead> <tbody> <!– 主体内容区域 –> <tr><td>手机</td>…</tr> </tbody> <tfoot> <!– 表脚区域(常用于汇总行) –> <tr><td>总计</td>…</tr> </tfoot> </table>

8. 响应式表格

使表格能在手机上正常显示:

/* 小屏幕时允许表格横向滚动 */ .table-container { overflow-x: auto; } /* 或者将表格转换为块状显示 */ @media (max-width: 600px) { table, thead, tbody, th, td, tr { display: block; } thead tr { position: absolute; top: -9999px; left: -9999px; } td { /* 使每个单元格像卡片一样显示 */ border: none; position: relative; padding-left: 50%; } td:before { /* 添加伪元素显示表头标签 */ position: absolute; left: 6px; content: attr(data-label); font-weight: bold; } }