我正在寻找一种方法来打破"打破"仅使用CSS的表格行。
我想改变这个:
对此:
我无法访问HTML,但可以控制CSS。
我试过了
td:nth-child(3) {
display: block;
}
但它似乎不起作用。
以下是一些简化的测试代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style>
td:nth-child(3) {
display: block;
background-color: yellow;
}
</style>
</head>
<body>
<table border="1">
<tr>
<td>111111</td>
<td>222222</td>
<td>333333</td>
<td>444444</td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:27)
如何将inline-block
与固定width
表格一起使用...或%
45%
width
td
个width
元素因此,您无需为table
td
在这里,我只是将display: inline-block;
转换为width
,由于固定的word-wrap: break-word;
表,它们将被强制换行到下一行。
同样使用table {
width: 120px;
}
table tr td {
width: 50px;
word-wrap: break-word;
}
table tr td {
display: inline-block;
margin-top: 2px;
}
属性,以便强制非间隔字符串中断。
%
您也可以使用基于width
的{{1}},这样您就无需关心单元格宽度....
如果vertical-align: top;
min-height
和table
table tr td {
display: inline-block;
margin-top: 2px;
vertical-align: top;
min-height: 20px;
}
Demo (仅在单元格为空时才需要)
请注意,inline-block
会导致4px
偏移问题,在这种情况下只需将font-size: 0;
分配给table
并重新设置font-size
返回您的td
元素,这样您将获得单元格边距的一致性。
警告:我永远不会建议做这类事情,所以 将此作为您的最后一个优先事项如果你有JavaScript控件,那么 考虑在
附近添加tr
td
从这里开始请忽略如果你不能使用jQuery,假设你有一个使用jQuery库,你可以简单地将片段添加到该JS文件....
(我在这里添加class
来唯一标识元素,class
也可以使用.addClass()
添加,通过定义一些最近的CSS选择器)所以没有这里修改HTML的问题。
$('table.wrap_trs tr').unwrap(); //Remove default pre-generated tr
var cells = $('table.wrap_trs tr td');
for (var i = 0; i < cells.length; i += 2) {
cells.slice(i, i + 2).wrapAll('<tr></tr>'); //Wrapping the tds with tr
}
答案 1 :(得分:7)
您可以使用float属性并使用TD的宽度进行播放,因为您需要调整表格的边框宽度
table{
width:100%;
}
td:nth-child(3) {
display: block;
background-color: yellow;
}
tr td {
float: left;
width: 49.5%;
}
希望这有帮助!但需要检查浏览器兼容性
答案 2 :(得分:5)
适当的CSS方法,简单易用
这可能对你有所帮助,但它可能会产生可变长度的问题,因此我使用了min-width
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style>
td:nth-child(3) {
display: block;
background-color: yellow;
clear:left;
}
tr{
float:left;
}
td{
float:left;
min-width:100px; //used min-width for proper alignment
}
</style>
</head>
<body>
<table border="1">
<tr>
<td>111111</td>
<td>222222</td>
<td>333333</td>
<td>444444</td>
</tr>
</table>
</body>
</html>