本文介绍HTML表格的创建、表格样式的设置,以及合并单元格的实现。
页面中创建表格相关的HTML元素包括:
table元素定义表格区域,其中,<table>标记常用的属性包括:
下面的代码,首先来看表格的默认显示样式:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <table border="1" cellspacing="0"> <tr><th>姓名</th><th>性别</th><th>语文</th><th>数学</th><th>英语</th></tr> <tr><td>张三</td><td>女</td><td>79</td><td>78</td><td>91</td></tr> <tr><td>刘一兵</td><td>男</td><td>85</td><td>81</td><td>72</td></tr> <tr><td>李四</td><td>女</td><td>95</td><td>91</td><td>85</td></tr> <tr><td>王二</td><td>男</td><td>85</td><td>61</td><td>75</td></tr> <tr><td>刘鑫</td><td>男</td><td>65</td><td>59</td><td>66</td></tr> </table> </body> </html>
代码中,使用table元素定义表结构、tr元素定义行、th元素定义列标题单元格、td元素定义数据单元格,页面显示效果如下图所示。
显示边框时可以在<table>标记中将border属性设置为1,效果如下图所示。
如果单元格之间不需要间隔,可以将<table>标记中的cellspacing属性设置为0,显示效果如下图所示。
使用CSS样式时,border-collapse属性可以设置单元格之间是否保留距离,其属性值包括:
empty-cells属性设置空白单元格是否显示,默认为show(显示),不显示是使用hide属性值。下图中显示了单元格边框合并时的对比效果,如果单元格之间有距离,则效果会更加明显。
此外,text-align属性可以设置单元格内容的水平对齐方式,如left(左对齐,默认值)、center(水平居中)、right(右对齐)。vertical-align属性可以设置单元格内容的垂直对齐方式,如top(顶部对齐)、middle(垂直居中,默认值)、bottom(底部对齐)。
示例表格中,前两列为人员信息,后三列为分数,需要分别设置样式时,可以结合colgropup和col元素完成,如下面的代码。
<table border="1" cellspacing="0"> <colgroup style="background:lightsteelblue;"> <col /> <col /> </colgroup> <colgroup style="background-color:#ddd;"> <col /> <col /> <col /> </colgroup> <tr><th>姓名</th><th>性别</th><th>语文</th><th>数学</th><th>英语</th></tr> <tr><td>张三</td><td>女</td><td>79</td><td>78</td><td>91</td></tr> <tr><td>刘一兵</td><td>男</td><td>85</td><td>81</td><td>72</td></tr> <tr><td>李四</td><td>女</td><td>95</td><td>91</td><td>85</td></tr> <tr><td>王二</td><td>男</td><td>85</td><td>61</td><td>75</td></tr> <tr><td>刘鑫</td><td>男</td><td>65</td><td>59</td><td>66</td></tr> </table>
代码中,第一个colgroup元素定义了两个col元素,表示前两列;第二个colgroup元素定义了三个col元素,表示3到5列;然后,直接在<colgroup>标记中使用style属性设置了样式属性,如果需要重复使用样式,也可以通过style元素或样式表文件进行设置,此时可以通过各种CSS选择器分别设置colgroup元素的样式。页面显示效果如下图所示。
下面的代码会综合演示表格的样式设置。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> table{ empty-cells:hide; border-collapse:collapse; } table .info_cols { background-color:lightsteelblue; } table .score_cols{ background-color:#ddd; } th { background:#bbb; } th, td { padding: 0.5em 1.5em; text-align: center; border: 1px solid #fff; } </style> </head> <body> <table> <colgroup class="info_cols"> <col /> <col /> </colgroup> <colgroup class="score_cols"> <col /> <col /> <col /> </colgroup> <tr><th>姓名</th><th>性别</th><th>语文</th><th>数学</th><th>英语</th></tr> <tr><td>张三</td><td>女</td><td>79</td><td>78</td><td>91</td></tr> <tr><td>刘一兵</td><td>男</td><td>85</td><td>81</td><td>72</td></tr> <tr><td>李四</td><td>女</td><td>95</td><td>91</td><td>85</td></tr> <tr><td>王二</td><td>男</td><td>85</td><td>61</td><td>75</td></tr> <tr><td>刘鑫</td><td>男</td><td>65</td><td>59</td><td>66</td></tr> </table> </body> </html>
请注意style元素中样式设置的顺序,其中,设置colgroup元素样式时,也会设置第一行th单元格的样式,而接下来单独设置了th的背景颜色(background-color),当多次设置元素的同一样式属性时,会应用最后一次设置的效果;最后一个样式使用逗号分隔同时定义了th和td元素的样式;页面显示效果如下图所示。
合并单元格的功能可以通过<td>标记的属性设置完成,包括:
下面的代码演示了这两个属性的应用。
<table border="1" cellspacing="0"> <tr><td colspan="3" rowspan="1">a1</td><td>d1</td><td>e1</td></tr> <tr><td>a2</td><td>b2</td><td>c2</td><td>d2</td><td>e2</td></tr> <tr><td>a3</td><td>b3</td><td>c4</td><td>d3</td><td>e3</td></tr> </table>
代码中定义第一行第一个单元格占用了3列1行,页面显示效果如下图所示。
需要更复杂的显示效果,如指标的主、子结构时,还可以单独设置单元格的边框,如下面的代码。
<table border="1" cellspacing="0"> <tr><td colspan="3" rowspan="1" style="text-align:center;border-bottom:none;">a1</td> <td>d1</td><td>e1</td></tr> <tr><td style="border-top:none;"></td> <td>b2</td><td>c2</td><td>d2</td><td>e2</td></tr> <tr><td>a3</td><td>b3</td><td>c4</td><td>d3</td><td>e3</td></tr> </table>
本例,第一行第一个单元格的下边框设置为没有(none),第二行第一个单元格的上边框设置为没有(none);显示效果如下图所示。
如图中所示,其中的b2和c2单元格内容从结构上显示为a1的子项。