我正在尝试设计一些HTML / CSS,它可以在表格中的特定行周围放置边框 . 是的,我知道我不是真的应该使用表格进行布局,但我不知道足够的CSS来完全替换它 .
无论如何,我有一个包含多行和多列的表,有些与rowspan和colspan合并,而我使用4个独立的CSS类(顶部,底部,左侧,右侧)连接到顶部的 <td>
单元格,分别是 table 的左下角和右下角 .
.top {
border-top: thin solid;
border-color: black;
}
.bottom {
border-bottom: thin solid;
border-color: black;
}
.left {
border-left: thin solid;
border-color: black;
}
.right {
border-right: thin solid;
border-color: black;
}
<html>
<body>
<table cellspacing="0">
<tr>
<td>no border</td>
<td>no border here either</td>
</tr>
<tr>
<td class="top left">one</td>
<td class="top right">two</td>
</tr>
<tr>
<td class="bottom left">three</td>
<td class="bottom right">four</td>
</tr>
<tr>
<td colspan="2">once again no borders</td>
</tr>
<tr>
<td class="top bottom left right" colspan="2">hello</td>
</tr>
<tr>
<td colspan="2">world</td>
</tr>
</table>
</html>
有没有更简单的方法来做我想要的?我尝试将顶部和底部应用于 <tr>
但它没有新的CSS,所以's probably a really basic solution to this that I'错过了 . )
note: 我确实需要有多个边界部分 . 基本思想是拥有多个边界集群,每个集群包含多行 .
10 回答
tr {outline: thin solid black;}
怎么样?在tr或tbody元素上为我工作,appears与大多数浏览器兼容,包括IE 8,但之前没有 .谢谢所有回复的人!我已经尝试了这里提出的所有解决方案,并且我已经在互联网上搜索了更多其他可能的解决方案,我想我找到了一个有前途的解决方案:
Output:
不必将
top
,bottom
,left
和right
类添加到每个<td>
,我所要做的就是将top row
添加到顶部<tr>
,bottom row
添加到底部<tr>
,将row
添加到每个<tr>
之间 . 这个解决方案有什么问题吗?我应该注意哪些跨平台问题?如果在父表上将
border-collapse
样式设置为collapse
,则应该能够设置tr
样式:(样式为内联样式)Output:
我也只是在玩这个,这对我来说似乎是最好的选择:
请注意 this will prevent the use of fluid/automatic column widths ,因为单元格将不再与其他行中的对齐,但边框/颜色格式仍然可以正常工作 . 解决方案是 give the TR and TDs a specified width (px或%) .
当然,如果你只想将它应用于某些行,你可以制作选择器
tr.myClass
. 显然display: table
不可能是其他黑客(hasLayout?)可能适用于那些人 . :-(这是一种使用tbody元素的方法,可以采用这种方法 . 您不能在tbody上设置边框(与tr上的设置不同),但您可以设置背景颜色 . 如果你想要实现的效果可以通过行组而不是边框上的背景颜色获得,这将起作用 .
使用
<tbody>
标记将行组合在一起,然后应用样式 .而style.css中的css
我能想到的另一种方法是在嵌套表中包含你需要边框的每一行 . 这将使边框更容易,但可能会产生其他布局问题,您将不得不手动设置表格单元格的宽度等 .
根据您的其他布局要求,您的方法可能是最好的方法,这里建议的方法只是一种可能的选择 .
根据您的要求,您希望在任意MxN单元块周围放置边框,没有使用Javascript,实际上没有更简单的方法 . 如果你的细胞是固定的,你可以使用浮子,但由于其他原因这是有问题的 . 你正在做的事可能很乏味,但没关系 .
好吧,如果你对Javascript解决方案感兴趣,使用jQuery(我的首选方法),你最终得到了这段相当可怕的代码:
我很乐意接受有关更简单方法的建议......
诀窍是outline property感谢enigment's answer,几乎没有修改
使用这个课程
然后在HTML中
结果是
希望这会对你有所帮助
一种更简单的方法是使表成为服务器端控件 . 你可以使用类似的东西: