), 它们的默认宽度是父元素的 100%. 而表格的的默认大小是根据其内容而定的。因此,需要采取额外的措施来获取表格布局样式,以便有效地在各种设备上工作。
动手练习: 创建你的第一个表格
对于表格的理论知识,我们已经说了很多了,所以, 让我们来看一个使用的例子,并建立一个简单的表格.
首先, 将 blank-template.html 和 minimal-table.css 拷贝到你的本地环境上。
每一个表格的内容都包含在这两个标签中 :
. 在你的 HTML 的 中添加这些内容。
在表格中,最小的内容容器是单元格, 是通过
元素创建的 ('td' 代表 'table data'). 把下面的内容添加到你的表格标签中:
| Hi, I'm your first cell. |
如果我们想要一行四个单元格,我们需要把这组标签拷贝三次,更新你表中的内容,让它看起来是这样的:
Hi, I'm your first cell. |
I'm your second cell. |
I'm your third cell. |
I'm your fourth cell. |
你会看到, 单元格不会放置在彼此的下方, 而是自动与同一行上的其他单元格对齐. 每个
元素 创建一个单独单元格,它们共同组成了第一行。我们添加的每个单元格都使行的长度变长。
如果想让这一行停止增加,并让单元格从第二行开始,我们需要使用 | 元素 ('tr' 代表 'table row'). 让我们现在来证实一下。
把你已经创建好的 4 个单元格放入
标签, 就像:
Hi, I'm your first cell. |
I'm your second cell. |
I'm your third cell. |
I'm your fourth cell. |
现在你已经实现了一行,可以继续增加至两行、三行。每一行都需要一个额外的
元素来包装,每个单元格的内容都应该写在 中。
这样会产生一个如下所示的表:
Hi, I'm your first cell. I'm your second cell. I'm your third cell. I'm your fourth cell.
Second row, first cell. Cell 2. Cell 3. Cell 4.
注意: 你也可以在 GitHub 中查看 simple-table.html (see it live also).
使用 | 元素添加标题
现在,让我们把注意力转向表格标题,表格中的标题是特殊的单元格,通常在行或列的开始处,定义行或列包含的数据类型 (举个例子, 看到本篇文章中第一个示例中的 "单数" 或者 "Object" ). 为了说明它们为什么这么有用, 来看下面这个例子,首先是源代码:
|
Knocky |
Flor |
Ella |
Juan |
Breed |
Jack Russell |
Poodle |
Streetdog |
Cocker Spaniel |
Age |
16 |
9 |
10 |
5 |
Owner |
Mother-in-law |
Me |
Me |
Sister-in-law |
Eating Habits |
Eats everyone's leftovers |
Nibbles at food |
Hearty eater |
Will eat till he explodes |
这是表格实际呈现的效果:
Knocky Flor Ella Juan
Breed Jack Russell Poodle Streetdog Cocker Spaniel
Age 16 9 10 5
Owner Mother-in-law Me Me Sister-in-law
Eating Habits Eats everyone's leftovers Nibbles at food Hearty eater Will eat till he explodes
这里的问题是:虽然你可以弄清楚发生了什么,但是尽可能的交叉参考数据并不容易。如果列和行的标题以某种方式出现,那将会更好。
动手练习: 表格标题
让我们来改进这个表格.
首先, 把 dogs-table.html 和 minimal-table.css 文件保存到你的本地环境,HTML 文件包含上文你看到的几种狗的数据。
为了将表格的标题在视觉上和语义上都能被识别为标题,你可以使用 | 元素 ('th' 代表 'table header'). 用法和 | 是一样的,除了它表示为标题,不是普通的单元格以外。进入你的 HTML 文件, 将表格中应该是标题的 | 元素标记的内容,都改为用 | 元素标记。
保存你的 HTML 文件,然后在浏览器中加载,然后你应该会看到,现在的标题更像标题了。
注意: 你可以在 GitHub 中找到完成的版本 dogs-table-fixed.html (see it live also).
为什么标题是有用的?
我们已经给出了部分答案,当标题明显突出的时候,你可以更加简单地找到你想找的数据,设计上也会看起来更好。
注意: 即使你不给表格添加你自己的样式,表格标题也会带有一些默认样式:加粗和居中,让标题可以突出显示。
表格标题也有额外的好处,随着 scope 属性 (我们将在下一篇文章中了解到),这个属性允许你让表格变得更加无障碍,每个标题与相同行或列中的所有数据相关联。屏幕阅读设备能一次读出一列或一行的数据,这是非常有帮助的。
允许单元格跨越多行和列
有时我们希望单元格跨越多行或多列。以下是一个简单的例子,显示了一些常见动物的名字。在某些情况下,我们要显示动物名称旁边的男性和女性的名字。有时候我们又不需要,那不需要的情况下,我们希望写着动物的名字的单元格的宽度可以是两个单元格的宽度 (因为写着名字的行会有两列,而没有写名字的行只有一列,行的宽度是不一样的)。
一开始的标记写法是这样的:
Animals |
Hippopotamus |
Horse |
Mare |
Stallion |
Crocodile |
Chicken |
Hen |
Rooster |
但是输出的结果不是我们想要的:
Animals
Hippopotamus
Horse Mare
Stallion
Crocodile
Chicken Hen
Rooster
我们需要一个方法,让 "Animals", "Hippopotamus", 和 "Crocodile" 的单元格的宽度变为两个单元格, "Horse" 和 "Chicken" 的高度变为两行 (因为要拥有一个男性名字和女性名字,可以先看效果图)。幸好, 表格中的标题和单元格有 colspan 和 rowspan 属性,这两个属性可以帮助我们实现这些效果。这两个属性接受一个没有单位的数字值,数字决定了它们的宽度或高度是几个单元格。比如, colspan="2" 使一个单元格的宽度是两个单元格。
让我们使用 colspan 和 rowspan 来改进现有的表格。
首先,把 animals-table.html 和 minimal-table.css 文件复制到你的本地环境,HTML 文件中包含了你刚才看到的动物示例的数据。
接着,使用 colspan 让 "Animals", "Hippopotamus", 和 "Crocodile" 占 2 个单元格的宽度。
最后,使用 rowspan 让 "Horse" 和 "Chicken" 占 2 个单元格的高度。
保存后,用浏览器打开你写的 HTML 文件,看看改进的地方。
注意: 你也可以在 GitHub 上找到完成的版本 animals-table-fixed.html (see it live also).
为表格中的列提供共同的样式
在我们继续介绍之前,我们将介绍本文中的最后一个功能。HTML有一种方法可以定义整列数据的样式信息:就是 和 元素。 它们存在是因为如果你想让一列中的每个数据的样式都一样,那么你就要为每个数据都添加一个样式,这样的做法是令人厌烦和低效的。你通常需要在列中的每个 或 | 上定义样式,或者使用一个复杂的选择器,比如 :nth-child()。
下面是一个简单的示例:
Data 1 |
Data 2 |
Calcutta |
Orange |
Robots |
Jazz |
下面就是上述代码的结果:
Data 1 Data 2
Calcutta Orange
Robots Jazz
这样不太理想,因为我们不得不在列中的每个单元格中重复那些样式信息 (在真实的项目中,我们或许会设置一个 class 包含那三个单元格 ,然后在一个单独的样式表中定义样式). 为了舍弃这种做法,我们可以只定义一次,在 元素中。 元素被规定包含在 容器中,而 就在 标签的下方。我们可以通过如下的做法来创建与上面相同的效果:
Data 1 |
Data 2 |
Calcutta |
Orange |
Robots |
Jazz |
我们使用了两个 来定义“列的样式”,每一个都会制定每列的样式,对于第一列,我们没有采取任何样式,但是我们仍然需要添加一个空的 元素,如果不这样做,那么我们的样式就会应用到第一列上,这和我们预想的不一样。
如果你想把这种样式信息应用到每一列,我们可以只使用一个 元素,不过需要包含 span 属性,像这样:
就像 colspan 和 rowspan, span 需要一个无单位的数字值,用来制定你想要让这个样式应用到表格中多少列
动手练习: colgroup and col
又到了需要你自己独立完成的时间了。
下面你可以看到一位语言老师的时间表。星期五,她有一个新的课程,全天教荷兰语,但是在星期二和星期四的几个时间点,她也教德语。她想把那些包含她教学的日子的列高亮显示。
通过下面这些步骤来重构这个表格。
首先,把 timetable.html 文件复制到你的本地环境。这个 HTML 文件包含你在上文中看到的表格,不过是减去样式信息的。
在 table 的顶部添加一个 元素,就放在 标签下面,可以添加 元素 (继续看下面剩余的步骤)。
第一列和第二列不需要应用样式。
为第三列添加一个背景颜色。style 属性是 background-color:#97DB9A;
为第四列设置一个独立的宽度,style 属性是 width: 42px;
为第五列添加一个背景颜色。style 属性是 background-color: #97DB9A;
为第六列添加不同的背景颜色和边框,表示这是一个特殊的日子,表示她正在教一个新的课。 style 属性是 background-color:#DCC48E; border:4px solid #C1437A;
最后两天是休息日,所以只需将它们设置为无背景颜色,但需要设置宽度;style 属性是 width: 42px;
看看你是否能完成这个示例,如果你遇到了困难,或想要核对你完成的作品,你可以在 GitHub 上找到完成的版本 timetable-fixed.html (see it live also)。
小结
本章节仅仅包含了 HTML 表格的基础。在下一篇文章中,我们将介绍一些稍微更高级的表格功能,并开始考虑方便视力障碍的人士的访问
Overview: Tables
下一页
在本单元中
HTML table basics
HTML table advanced features and accessibility
Structuring planet data
Related Topics
新手请从这开始!
Web 入门
HTML — 构建 Web
HTML 介绍
多媒体与嵌入
HTML 表格
HTML 表格概览
HTML 表格基础
HTML 高级表格特性和可访问性
作业:构建行星数据
CSS — 设计 Web
CSS first steps
CSS building blocks
样式化文字
CSS 排版概述
JavaScript — 用户端动态脚本
JavaScript 第一步
JavaScript 基础要件
JavaScript 对象介绍
Asynchronous JavaScript
客户端网页 API
Web forms — Working with user data
Core forms learning pathway
Advanced forms articles
可访问性 — 使每个人都能使用 Web
可访问性指南
可访问性测评
工具与测试
Client-side web development tools
Introduction to client-side frameworks
React
Ember
Vue
Svelte
Git and GitHub
跨浏览器测试
服务端网页编程
第一步
Django 网站框架 (Python)
Express 网页框架 (node.js/JavaScript)
更多资源
常见问题
Last modified: 2020年9月15日, by MDN contributors
Web Technologies
Learn Web Development
About MDN
Feedback
About
MDN Web Docs Store
Contact Us
Firefox
| |