列表与数据表格
管理后台经常需要展示操作步骤、功能清单和学员数据。本节先根据内容关系选择有序列表、无序列表或定义列表,再搭建带标题、表头和汇总区域的数据表格。
使用列表组织内容
有序列表
在 HTML 中,有序列表中的各个列表项是有顺序的。有序列表从 <ol> 开始,到 </ol> 结束。有序列表的列表项是有先后顺序的,一般采用数字或字母作为顺序,默认是采用数字顺序。
步骤有明确顺序时使用 ol:
html
<div>登记步骤</div>
<ol>
<li>填写基本信息</li>
<li>选择班级</li>
<li>核对手机号</li>
<li>提交表单</li>
</ol>预览效果如下所示:
登记步骤
- 填写基本信息
- 选择班级
- 核对手机号
- 提交表单
说明:
ol,即 ordered list(有序列表);li,即 list(列表项)。
有序列表可以从指定编号开始:
html
<ol start="3">
<li>核对手机号</li>
<li>提交表单</li>
</ol>预览效果如下所示:
- 核对手机号
- 提交表单
无序列表
项目没有先后顺序时使用 ul:
html
<div>学员管理功能</div>
<ul>
<li>查询学员</li>
<li>新增学员</li>
<li>编辑学员</li>
<li>删除学员</li>
</ul>预览效果如下所示:
学员管理功能
- 查询学员
- 新增学员
- 编辑学员
- 删除学员
ul 内部直接放 li。项目符号样式以后使用 CSS 的 list-style 调整,不使用旧式 type 属性。
术语与说明列表
术语和解释适合使用 dl、dt、dd:
html
<dl>
<dt>正常</dt>
<dd>学员可以继续参加课程。</dd>
<dt>已停用</dt>
<dd>学员暂时不能进入后续学习流程。</dd>
</dl>预览效果如下所示:
- 正常
- 学员可以继续参加课程。
- 已停用
- 学员暂时不能进入后续学习流程。
dl:definition list,定义列表。dt:definition term,术语。dd:definition description,说明。
搭建数据表格
表格在实际开发中用得非常多,因为使用表格可以更清晰地排列数据,如下表所示。
| 支出项目 | 单价(元) | 数目 | 金额(元) |
|---|---|---|---|
| 垃圾箱 | 30 | 12 | 360 |
| 垃圾牌 | 100 | 12 | 1200 |
| 宣传单 | 0.08 | 400 | 32 |
| 宣传小册子 | 3 | 250 | 750 |
| 合计 | — | — | 2342 |
在 HTML 中,一个表格一般会由以下 3 个部分组成。
- 表格:table 标签
- 行:tr 标签
- 单元格:td 标签
html
<table>
<caption>学员名单</caption>
<thead>
<tr>
<th scope="col">姓名</th>
<th scope="col">班级</th>
<th scope="col">手机号</th>
<th scope="col">状态</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>Python 1 班</td>
<td>13800000001</td>
<td>正常</td>
</tr>
<tr>
<td>李四</td>
<td>Web 全栈班</td>
<td>13800000002</td>
<td>已停用</td>
</tr>
</tbody>
</table>预览效果如下所示:
| 姓名 | 班级 | 手机号 | 状态 |
|---|---|---|---|
| 张三 | Python 1 班 | 13800000001 | 正常 |
| 李四 | Web 全栈班 | 13800000002 | 已停用 |
认识表格元素
| 元素 | 作用 |
|---|---|
table | 表格整体 |
caption | 表格标题 |
thead | 表头区域 |
tbody | 表格主体 |
tfoot | 表格汇总区域 |
tr | 一行 |
th | 表头单元格 |
td | 普通数据单元格 |
scope="col" 表示当前表头描述一列。行表头使用 scope="row":
html
<tr>
<th scope="row">张三</th>
<td>Python 1 班</td>
<td>正常</td>
</tr>放进表格后的预览效果:
| 姓名 | 班级 | 状态 |
|---|---|---|
| 张三 | Python 1 班 | 正常 |
完善表格结构
添加汇总区域
需要汇总时使用 tfoot:
html
<tfoot>
<tr>
<th scope="row" colspan="3">学员总数</th>
<td>2</td>
</tr>
</tfoot>放进表格后的预览效果:
| 姓名 | 班级 | 手机号 | 状态 |
|---|---|---|---|
| 学员总数 | 2 | ||
thead、tbody、tfoot 表达表格区域,不是为了自动添加样式。
横向合并
colspan 表示单元格横跨几列:
html
<tr>
<th ></th>
<td >xx</td>
<td >yy</td>
<td >zz</td>
</tr>
<tr>
<th scope="row">备注</th>
<td colspan="3">周末班学员</td>
</tr>预览效果如下所示:
| xx | yy | zz | |
| 备注 | 周末班学员 | ||
纵向合并
rowspan 表示单元格纵跨几行:
html
<tbody>
<tr>
<th scope="row" rowspan="2">Python 1 班</th>
<td>张三</td>
<td>正常</td>
</tr>
<tr>
<td>王五</td>
<td>正常</td>
</tr>
</tbody>预览效果如下所示:
| Python 1 班 | 张三 | 正常 |
|---|---|---|
| 王五 | 正常 |
合并后要重新计算每行实际占用的列数。初学阶段只在确实能提升数据理解时使用,不要为了视觉效果大量合并。
完成课程与学员概览
html
<main>
<h1>学员信息管理</h1>
<section>
<h2>管理流程</h2>
<ol>
<li>输入查询条件</li>
<li>核对列表数据</li>
<li>执行新增或编辑</li>
</ol>
</section>
<section>
<h2>学员列表</h2>
<table>
<caption>当前班级学员</caption>
<thead>
<tr>
<th scope="col">姓名</th>
<th scope="col">班级</th>
<th scope="col">状态</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">张三</th>
<td>Python 1 班</td>
<td>正常</td>
</tr>
<tr>
<th scope="row">李四</th>
<td>Web 全栈班</td>
<td>已停用</td>
</tr>
</tbody>
</table>
</section>
</main>预览效果如下所示:
学员信息管理
管理流程
- 输入查询条件
- 核对列表数据
- 执行新增或编辑
学员列表
| 姓名 | 班级 | 状态 |
|---|---|---|
| 张三 | Python 1 班 | 正常 |
| 李四 | Web 全栈班 | 已停用 |
小结
ul表示无顺序项目,ol表示有顺序步骤。dl适合术语与解释。- 表格用于二维数据,不用于页面布局。
caption、th和scope能让表格含义更清楚。colspan横向合并,rowspan纵向合并。