路线页回答“去哪里”,行程页还要回答“几点到、做什么、在哪里集合”。这些信息需要按行列对照,正适合 HTML 表格。

表格的最小结构由 <table>、<tr>、<th> 和 <td> 组成:
<table>
<tr>
<th>时间</th>
<th>地点</th>
<th>安排</th>
</tr>
<tr>
<td>09:00</td>
<td>游客中心</td>
<td>签到和安全说明</td>
</tr>
</table>tr 是一行,th 是表头单元格,td 是数据单元格。表格适合课程表、价格对比、统计数据和时间安排,不应该用来控制整个页面的视觉布局。
<caption> 说明整张表格是什么:
<table>
<caption>运河慢行线周六行程</caption>
<!-- 表格行放在这里 -->
</table>“一日行程”这个页面标题仍然是 <h1>,而 caption 只属于这张表格。两者作用不同。
完整表格可以用 <thead>、<tbody> 和 <tfoot> 分组:
<table>
<caption>运河慢行线周六行程</caption>
<thead>
<tr>
<th scope="col">时间</th>
<th scope="col">地点</th>
<th scope="col">安排</th>
</tr>
</thead
scope="col" 表示表头说明一整列,scope="row" 表示表头说明一整行。它们能帮助屏幕阅读器建立表头与数据之间的关系。
colspan 跨列,rowspan 跨行:
<tr>
<th scope="row" colspan="2">预计总时长</th>
<td>约 3 小时</td>
</tr>合并后的单元格会占据多个网格位置。复杂合并很容易让行列关系难以理解。能用普通行列讲清楚时,就不要合并。
不要为了做出左右分栏、导航栏或卡片布局而使用 table。那是 CSS 布局要解决的问题。HTML 表格只描述本身就是表格的数据。
把 schedule.html 的 <body> 替换为下面的内容:
<body>
<ul>
<li><a href="index.html">首页</a></li>
<li><a href="routes.html">路线</a></li>
<li><a href="schedule.html">行程</a></li>
<li
打开页面,先不看视觉效果,只检查四件事:表格有 caption;每列有表头;时间这一列的每个数据行也有行表头;所有行占用的列数一致。
行程页现在完成了。下一章我们会创建报名表单,并明确浏览器能验证什么、静态 HTML 又不能独自完成什么。