![HTML5+CSS3+JavaScript从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/699/24172699/b_24172699.jpg)
6.2 新建表格
表格有多种形式,如简单的表格、带标题的表格、结构化的表格、列分组的表格等,本节将介绍这些不同形式的表格的设计方法。
6.2.1 定义普通表格
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P118_171221.jpg?sign=1738918072-x5DGsBGdIxw39G5WcVKjacJ1ijUFbcwj-0-ebaa5f670aaff6558dbe24862b24aaa4)
视频讲解
使用table元素可以定义HTML表格。简单的HTML表格由一个table元素,以及一个或多个tr和td元素组成,其中tr元素定义表格行,td元素定义表格的单元格。
【示例】下面示例设计一个简单的HTML表格,包含两行两列,演示效果如图6.2所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P118_171552.jpg?sign=1738918072-117RfkenmWnQrMSU5vjFX3ezDWyLYUco-0-650e316a820d3220d3e431bf5ab77147)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P118_171177.jpg?sign=1738918072-urJapcUB1PzXxJPmClQr6j9HatKI6RcA-0-22d78ce95d295c66d08c827419da4a8a)
图6.2 设计简单的表格
6.2.2 定义列标题
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P118_171224.jpg?sign=1738918072-XVjjy88RolELISMpbTwJCLHYwY1LJy6D-0-8235523e33b5bf14ab60a0c9260694e9)
视频讲解
在数据表格中,每列可以包含一个标题,这在数据库中被称为字段,在HTML中被称为表头单元格。使用th元素定义表头单元格。
提示:HTML表格中有两种类型的单元格:
表头单元格:包含表头信息,由th元素创建。
标准单元格:包含数据,由td元素创建。
在默认状态下,th元素内部的文本呈现为居中、粗体显示,而td元素内通常是左对齐的普通文本。
【示例1】下面示例设计一个含有表头信息的HTML表格,包含两行两列,演示效果如图6.3所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P119_171554.jpg?sign=1738918072-qEWJHaOZGbSyRdI2JViO91mFvBmMMM11-0-c44f6745eadffa759f47219ac5995b08)
表头单元格一般位于表格的第一行,当然,用户可以根据需要把表头单元格放在表格中的任意位置。例如,第一行或最后一行,第一列或最后一列等。也可以定义多重表头。
【示例2】下面示例设计了一个简单的课程表,表格中包含行标题和列标题,即表格被定义了两类表头单元格,演示效果如图6.4所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P119_171555.jpg?sign=1738918072-m22peTlEiOlUWAAdghztxCppjNMPfMHT-0-5877edba682138578e3872c998791620)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P119_102867.jpg?sign=1738918072-oHwVMRu95wRV7dRQFWCd7PfUFeIw6l17-0-182723e85473f7ea78e30095cb9dc01d)
图6.3 设计带有表头的表格
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P119_102868.jpg?sign=1738918072-ixompUaR662aa4BTVeE4XpFBPzMJEEm2-0-a41e8af9128f1d3a303b7e12945c4c11)
图6.4 设计双表头的表格
6.2.3 定义表格标题
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P120_103025.jpg?sign=1738918072-VMEQTg6Z7Qy1nlhvbnzIIay9QaoO2Xoj-0-facab775069ec0ea2ef98eecc5ae272f)
视频讲解
有时为了方便浏览,用户需要为表格添加一个标题。使用caption元素可以定义表格标题。
注意:须紧随table元素之后,只能对每个表格定义一个标题。
【示例】以上节示例1为基础,下面示例为上节示例1的表格添加一个标题,演示效果如图6.5所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P120_171557.jpg?sign=1738918072-jNI1EYvvbHzD1IDAeHNHrUpDlhJ6KwHr-0-8efd50c6cdb6f85790fe6215ac311838)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P120_102974.jpg?sign=1738918072-bvSwJ9WVe4jns54zLTobKt593e6FF24f-0-0c879b627e92062ea055bad369ca3018)
图6.5 设计带有标题的表格
从图6.5中可以看到,在默认状态下这个标题位于表格上面居中显示。
提示:在HTML4中,可以使用align属性设置标题的对齐方式,取值包括left、right、top、bottom。在HTML5中不建议使用,建议使用CSS样式取而代之。
6.2.4 表格行分组
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P120_103028.jpg?sign=1738918072-xCiZjfMMzu37Hbp04WKgRp0tm0EhWHS8-0-d9465be0df2e21c553581a1453fa6142)
视频讲解
thead、tfoot和tbody元素可以对表格中的行进行分组。当创建表格时,如果希望拥有一个标题行,一些带有数据的行,以及位于底部的一个总计行,这样可以设计独立于表格标题和页脚的表格正文滚动。当长的表格被打印时,表格的表头和页脚可被打印在包含表格数据的每张页面上。
使用thead元素可以定义表格的表头,该标签用于组合HTML表格的表头内容,一般与tbody和tfoot元素结合起来使用。其中tbody元素用于对HTML表格中的主体内容进行分组,而tfoot元素用于对HTML表格中的表注(页脚)内容进行分组。
【示例】下面示例使用上述各种表格标签对象,设计一个符合标准的表格结构,代码如下所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P120.jpg?sign=1738918072-wottsRfuzegU35HFY5OVnf61jf9N3kQ5-0-4580b0e6584b12e4c76700d13411ef19)
在上面示例代码中,可以看到<tfoot>是放在<thead>和<tbody>之间,而最终在浏览器中会发现<tfoot>中的内容显示在表格底部。在<tfoot>标签中有一个colspan属性,该属性的主要功能是横向合并单元格,将表格底部的两个单元格合并为一个单元格,示例效果如图6.6所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P121_171359.jpg?sign=1738918072-mSnRay8XEXruuFT3zaGEszDOfoTYXZlH-0-95b633a78e247d2d36e1e3cce3514eee)
图6.6 表格结构效果
注意:当使用thead、tfoot和tbody元素时,必须使用全部的元素,排列次序是thead、tfoot、tbody,这样浏览器就可以在收到所有数据前呈现页脚,且这些元素必须在table元素内部使用。在默认情况下,这些元素不会影响到表格的布局。不过,用户可以使用CSS使这些元素改变表格的外观。在<thead>标签内部必须包含<tr>标签。
6.2.5 表格列分组
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P121_171423.jpg?sign=1738918072-W8ps57GLLT1cpMs0JeKkWaPCuHee600X-0-45275b3c5b705d76e8364c28b6fa718d)
视频讲解
ccol和colgroup元素可以对表格中的列进行分组。
其中使用<col>标签可以为表格中一个或多个列定义属性值。如果需要对全部列应用样式,<col>标签很有用,这样就不需要对各个单元格和各行重复应用样式了。
【示例1】下面示例使用col元素为表格中的三列设置不同的对齐方式,效果如图6.7所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P121_174404.jpg?sign=1738918072-et8b67NbPRYHZed81ozcWJaS7jKB6J3K-0-f59de5aafcd88813a0b90db3a5e1edb6)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P122_103256.jpg?sign=1738918072-50jKrtRiqUJYgZqlYEHm28PXvnS1jK2f-0-956d303e06088753e43841b2bf73eb91)
图6.7 表格列分组样式
在上面示例中,使用3个col元素为表格中三列分别定义不同的对齐方式。这里使用HTML标签属性align设置对齐方式,取值包括right(右对齐)、left(左对齐)、center(居中对齐)、justify(两端对齐)和char(对准指定字符)。由于浏览器支持不统一,不建议使用align属性。
提示:只能在table或colgroup元素中使用col元素。col元素是仅包含属性的空元素,不能够包含任何信息。如要创建列,就必须在tr元素内嵌入td元素。
使用<colgroup>标签也可以对表格中的列进行组合,以便对其进行格式化。如果需要对全部列应用样式,<colgroup>标签很有用,这样就不需要对各个单元和各行重复应用样式了。
【示例2】下面示例使用colgroup元素为表格中每列定义不同的宽度,效果如图6.8所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P122_171562.jpg?sign=1738918072-e7fhmQOo6ka46cUxa7jeU6dPGtADlNDc-0-ad9734fcebdc345b930f97208e61ae10)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P122_103350.jpg?sign=1738918072-CdKTIRXAFi7KBHSgKeDkbbnkbXzDGHGD-0-e5a3b703e86a878a08e77e36cfafa2c1)
图6.8 定义表格列分组样式
<colgroup>标签只能在table元素中使用。
为列分组定义样式时,建议为<colgroup>或<col>标签添加class属性,然后使用CSS类样式定义列的对齐方式、宽度和背景色等样式。
【示例3】从上面两个示例可以看到,<colgroup>和<col>标签具有相同的功能,同时也可以把<col>标签嵌入到<colgroup>标签中使用。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P122_171563.jpg?sign=1738918072-DI1U8lFoeoqv4TgBFI2OgR0efWCv9Fp2-0-8fa7c82496f3a758212f55b12eac3f2d)
如果没有对应的col元素,列会从colgroup元素那里继承所有的属性值。
提示:span是<colgroup>和<col>标签专用属性,规定列组应该横跨的列数,取值为正整数。例如,在一个包含6列的表格中,第一组有4列,第二组有2列,这样的表格在列上进行分组,如下所示:
<colgroup span="4"></colgroup> <colgroup span="2"></colgroup>
浏览器将表格的单元格合成列时,会将每行前四个单元格合成第一个列组,将接下来的两个单元格合成第二个列组。这样,<colgroup>标签的其他属性就可以用于该列组包含的列中了。
如果没有设置span属性,则每个<colgroup>或<col>标签代表一列,按顺序排列。
注意:现代浏览器都支持<colgroup>和<col>标签,但是Firefox、Chrome和Safari浏览器仅支持col和colgroup元素的span和width属性。也就是说,用户只能够通过列分组为表格的列定义统一的宽度,另外也可以定义背景色,但是其他CSS样式不支持。虽然IE支持,但是不建议用户去应用。通过示例2,用户也能够看到CSS类样式中的“color:red;”和“font-size:16px;”都没有发挥作用。
【示例4】下面示例定义如下几个类样式,然后分别应用到<col>列标签中,显示效果如图6.9所示。
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P123_171565.jpg?sign=1738918072-0NTizkFJGcsKksgR3B61J7KCvKSPr3eE-0-ddb379f8a96b42dc5d5da553fd9125ea)
![](https://epubservercos.yuewen.com/32B511/13043253503832106/epubprivate/OEBPS/Images/Figure-P124_103680.jpg?sign=1738918072-sqFc0GXTihH8LjtTDz36B1wz7V0pMG4T-0-494119da68cee63a5aa24ca5c106e36b)
图6.9 设计隔列变色的样式效果