HTML: HTML 表格

表格(<table>)用于在网页上展示结构化数据。它们由行(<tr>)和单元格(<td>/<th>)构成,是用于展示日程安排、价格表、数据报告及类似内容的标准选择。

1. 表格的基本结构

一个最简单的表格至少包含 <table>、行 <tr> 和数据单元格 <td>

▶ 示例

HTML
<table border="1" width="100%">
  <tr>
    <th>姓名</th>
    <th>年龄</th>
    <th>城市</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>25</td>
    <td>北京</td>
  </tr>
  <tr>
    <td>李四</td>
    <td>30</td>
    <td>上海</td>
  </tr>
</table>
▶ 试一试

2. 表格的常用属性

你可以给 <table><td> 添加一些基础属性来控制外观——不过要注意,这些属性大多已废弃(deprecated),CSS 是更推荐的替代方式。但初学时了解它们有助于理解表格的显示机制:

▶ 示例

HTML
<table border="1" width="100%">
  <tr>
    <th align="left">姓名</th>
    <th width="60%">简介</th>
  </tr>
  <tr>
    <td valign="top">张三</td>
    <td>前端开发工程师</td>
  </tr>
</table>
▶ 试一试
属性 作用 替代方案
border 设置表格边框(如 border="1" CSS border
width 表格或单元格宽度 CSS width
align 水平对齐(left / center / right) CSS text-align
valign 垂直对齐(top / middle / bottom) CSS vertical-align
⚠️ 重要提醒: 上面这些属性(borderwidthalignvalign)在 HTML5 中已废弃,border="1" 虽然浏览器仍然支持,但只是为了兼容旧代码。实际项目中应使用 CSS 控制表格样式,例如用 bordertext-alignvertical-align 等属性。本站在style.css中已预置了表格样式,所以你看不到 border="1" 也能看到整齐的边框。


3. 单元格合并

colspan 横向合并多列,rowspan 纵向合并多行:

▶ 示例

HTML
<table border="1">
  <tr>
    <th>姓名</th>
    <th colspan="2">联系方式</th>
  </tr>
  <tr>
    <td rowspan="2">张三</td>
    <td>邮箱</td>
    <td>zhang@mail.com</td>
  </tr>
  <tr>
    <td>电话</td>
    <td>138-0000-0000</td>
  </tr>
</table>
▶ 试一试

4. 表格的语义化结构

除了基本的 <table><tr>,HTML 还提供了一组语义化标签来组织表格的各个部分:

▶ 示例

HTML
<table border="1">
  <caption>2026年销售统计表</caption>
  <thead>
    <tr>
      <th>季度</th>
      <th>销售额</th>
      <th>利润</th>
    </tr>
  </thead>
  <tbody>
    <tr><td>Q1</td><td>100万</td><td>20万</td></tr>
    <tr><td>Q2</td><td>120万</td><td>25万</td></tr>
  </tbody>
  <tfoot>
    <tr><td>合计</td><td>220万</td><td>45万</td></tr>
  </tfoot>
</table>
▶ 试一试

❓ 常见问题

Q 可以用表格来做页面布局吗?
A 绝对不可以。用表格做页面布局是20年前的做法,现在完全被淘汰了。原因:1)表格布局难以维护,改一个地方可能影响整个页面;2)表格不是语义化的布局方式,搜索引擎和屏幕阅读器会误解内容结构;3)表格布局在移动端显示效果极差。表格只用来展示数据(如成绩单、价格表、日程安排),布局应该用CSS的Flexbox或Grid。
Q colspanrowspan是什么?怎么用?
A colspan用于水平合并单元格(跨列),rowspan用于垂直合并单元格(跨行)。例如:<td colspan="2">表示这个单元格横跨2列;<td rowspan="3">表示这个单元格纵跨3行。常见场景:表头跨列合并(如"总分"横跨语文、数学、英语三列)、分组标题跨行合并。注意:合并后要删除被合并位置的单元格,否则表格会错位。
Q <thead><tbody><tfoot>是必须的吗?
A 不是必须的,但强烈建议使用。它们的作用是语义化表格结构:<thead>包裹表头行,<tbody>包裹数据行,<tfoot>包裹汇总行。好处:1)浏览器可以独立滚动表头和数据;2)打印时表头会在每页重复显示;3)屏幕阅读器能更好地理解表格结构;4)方便CSS样式控制。即使只有一行数据,也建议用<tbody>包裹。

📖 小节

📝 作业

  1. 课程表:<table> 制作一个课程表,包含表头(星期一至星期五)和至少 4 行课程安排。
  2. 合并练习:创建一个包含合并单元格的成绩表,表头有"姓名"和"各科成绩"(colspan 覆盖语文、数学、英语三列)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏