学习前提
掌握 HTML 嵌套和列表;准备一组按行列比较的数据。
本课完成后你能做什么
建立带标题、行表头和列表头的数据表,判断什么时候应使用表格而不是卡片。
先理解机制
表格的价值不是画出边框,而是让单元格同时受到行和列的解释。例如课程名称、课时和难度按行排列时,一个“4”只有结合列标题才知道是四节课。caption 描述整张表;th 表示表头,td 表示普通数据。thead 和 tbody 表达分组,却不能替代明确的表头关联。
简单表格中,scope="col" 表示列表头,scope="row" 表示行表头。合并单元格会增加关联复杂度,应在信息确实需要时才使用 rowspan 或 colspan。两列表格通常比一个巨大的复杂表更易读;把复杂数据拆成多个带标题的表格,常比不断合并表头更清晰。
可运行示例
<table>
<caption>Weekly learning plan</caption>
<thead><tr><th scope="col">Topic</th><th scope="col">Sessions</th></tr></thead>
<tbody>
<tr><th scope="row">HTML</th><td>3</td></tr>
<tr><th scope="row">CSS</th><td>4</td></tr>
</tbody>
</table>
推演与验证
在 body 中运行示例,观察未加 CSS 时仍能辨认数据结构。检查每行的单元格数量是否一致。再添加“练习目标”一列,要求每个课程都有对应数据。用开发者工具查看 table 的可访问名称是否来自 caption,而不是只在外面放一个没有关联的段落。
常见错误与边界
不要使用表格给整页做左右布局;布局应交给 CSS。不要把所有单元格都写成 td,再只靠加粗伪装表头。窄屏放不下时可以让表格所在容器独立横向滚动,但不要把整个页面撑出屏幕。
动手练习
为三门课程添加“章节数”和“完成状态”两列。说明为什么完成状态不能只用绿色和红色圆点表示。
参考解法与理由
状态应包含可读文字,例如 Completed 或 In progress;颜色只是辅助提示。课程名保留行为表头,新增字段是列表头。这样用户能够明确地读出“CSS 的完成状态是进行中”,而无需根据颜色猜测含义。