CSS 控制表格样式
表格是HTML中用来显示比较密集的信息,在HTML早期就有支持。
表格的HTML标记较其他元素复杂很多,浏览器也为<table>
标签提供了不少默认样式,
所以表格的排版行为也较为复杂。
本文讨论了表格的边框模型,以及如何利用CSS3设置条纹样式和视觉反馈。
HTML标记
一个基本的表格标记是这样的:
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>Bill</td>
<td>Gates</td>
</tr>
<tr>
<td>Steven</td>
<td>Jobs</td>
</tr>
</table>
在Chrome给出的默认样式下看起来是这样的:
表格边框模型
CSS标准中有两种表格边框模型:分离模型(separate)和坍缩模型(collapse)。
在separate模型中,表格相邻单元格的边框是分离的,
边框间距由table
的border-spacing
指定。
尽管这有些反直觉,separate模型却是多数浏览器中的默认值(border-collapse: separate
)。
设置单元格边框后便可看到效果:
td, th {
border: 1px solid #666;
}
可以看到单元格边框是分离的:
如果设置为collapse
模型,边框便会合并:
table{
border-collapse: collapse;
}
区分奇偶行
为了显示美观通常会加宽单元格,与此同时却牺牲了同行单元格的视觉关联。
这使得用户很难随着一行去阅读信息。
在Bootstrap中提供了table-striped
类来区分奇偶行并添加条纹,
效果像这样:
实现也很简单,用到了CSS3的:nth-child()
伪类:
tr:nth-child(odd){
background: #f9f9f9;
}
这里的
odd
是关键字,也可以使用数字、包含n
的函数等, 更详细的CSS伪类介绍请参见CSS选择器总结一文。
视觉反馈
为了让用户更容易跟随一行的信息,除了区分奇偶行样式,还可以高亮鼠标所在的行。 同时也需要注意,视觉反馈无疑增加了易用性,但视觉反馈的滥用也会使页面显得杂乱无章。 具体的样式选择还需要配合整体设计。
高亮光标所在行与高亮奇数行的方式很相似,这里需要使用:hover
伪类。
需要注意的是,表头中的行一般不需高亮。
tr:hover{
background: #f9f9f9;
}
thead tr:hover{
background: transparent;
}
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://harttle.land/2016/03/10/css-table.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。