<table>
标签是前端比较常规使用的元素标签,尤其数据的展示方面,如面向企业端的数据看板,面向C端的统计数据等等。本文将简单介绍下如何使用table
标签来完成一个前端数据的基础展示功能。如下,通过一个表格的代码示例来了解下table
的使用:
<table border="1">
<tr>
<th> 属性</th>
<th> 值集</th>
<th> 描述</th>
</tr>
<tr>
<td>align</td>
<td>
left、
center、
right</td>
<td> 规定表格相对周围元素的对齐方式。 </td>
</tr>
</table>
如上,表格绘制主要是由table、tr、th、td
等属性组成的。其中table
是规定表格绘制区域,tr
元素控制数据行,th
元素用于绘制表格头部,td
元素用于绘制表格的数据单元。如上第一行就是通过tr
包裹th
绘制的表格头。
注意:html 4 table元素中的中align、bgcolor属性不支持, XHTML 1.0 Strict DTD中,table元素中的align、bgcolor不支持使用。
如下,介绍table
中支持的属性值设置以及设置支持的数据值集:
属性名 | 值集 | 说明 |
align | left | right | center | 规定表格的对齐方式 |
bgcolor | 颜色设置,支持常规设置颜色的设置格式, 如rgb、十六进制等 | 表格背景色 |
border | 像素大小,如:1px | 表格边框大小 |
cellpadding | 像素或者百分比 | 单元格之间的空白 |
frame | void | above | below | hsides | lhs | rhs | vsides | box | border | 外侧边框哪部分可见 |
rules | none | groups | rows | cols | all | 内侧边框哪部分可见 |
summary | 文本信息 | 表格的描述文本 |
width | html长度数据,如:200px | 表格的宽度 |
属性名 | 值集 | 说明 |
colspan | 整数数字 | 表头单元格可横跨的列数 |
headers | header ID | 规定与表头单元格相关联的一个或多个表头单元格 |
rowspan | 整数数字 | 表头单元格可纵跨的行数 |
scope | col | colgroup | row | rowgroup | 表头单元格是否是行、列、行组或列组的头部 |
属性名 | 值集 | 说明 |
colspan | 整数数字 | 表头单元格可横跨的列数 |
rowspan | 整数数字 | 表头单元格可纵跨的行数 |
headers | header ID | 规定与表头单元格相关联的一个或多个表头单元格 |
这是HTML
规范给定的table
操作元素属性控制。考虑到其控制的功能单一,效果比较差,且保持格式控制的一致性,目前主要是以CSS
控制table
为主。
1、设置表格边框
默认表格没有边框,我们可以通过css来给表格设置一个边框:
table,th,td {
border:solid 1px #add9c0;
}
并为其单元格设置一个上下3px,左右5px的内边距,代码如下:
th,td {
padding: 3px 5px;
}
表格周围的边框和单元格之间的边框,可以通过设置border-collapse
将其合并,默认为分离状态,如上图table外边框与单元格为分离一小段距离,如下:
// border-collapse:separate(分离,默认值) | collapse (边框合并,如果相邻则共用一个边框)
table {
border-collapse: collapse;
}
2、表格布局
table
表格我们可以通过CSS
属性table-layout
来设置表格布局算法,使用格式如下:
table-layout:auto(默认值) | fixed ;
自动表格布局(auto)
当设置为auto
布局算法时,表格的列宽由单元格的内容自适应设定。其特点如下:
- 算法有时会较慢,它需要在确定最终的布局之前访问表格中所有的内容。
- 自动表格布局时,设置单元格的宽度是没有效的。
固定表格布局(fixed)
当设置为fixed
布局算法时,表格的列宽是由表格的宽度、列宽度、表格边框宽度、单元格的间距决定,与表格内容无关,这样可以使得表格可以快速布局。若未指定表格的单元格宽度,则会根据表格的总宽度均匀分配到单个单元格中。其特点如下:
- 布局算法较快,无需访问table元素重新绘制。
- 可以根据设定的单元格宽度控制各个列的大小分配。
建议使用fixed
布局,避免对table
元素的重复绘制。如下,为我们设置的布局方式:
table {
width:200px;
table-layout:fixed;
}