有没有办法在表格中垂直居中单个td元素?
<table style="width:100%; text-align: center">
<tr>
<td>Jill</td>
<td>Smith</td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td> <!--center this-->
</tr>
</table>
&#13;
答案 0 :(得分:4)
您可以使用rowspan
执行此操作。我确实需要改变一下html;向所有行添加<td>
,将值添加到第一行,将colspan
设置为需要应用的<tr>
数量。
小提琴: https://jsfiddle.net/q2ag7ehj/1/
<table style="width:100%; text-align: center">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td rowspan="6">94</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td></td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td></td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
<td></td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
<td></td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td></td>
</tr>
</table>
答案 1 :(得分:3)
不完全是。
将单元格移动到第一行并添加rowspan
属性。然后应用vertical-align
CSS属性。
.x {
vertical-align: middle;
}
<table border="1" width="500px">
<tr>
<td>Jill</td>
<td>Smith</td>
<td class="x" rowspan="4">94</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
</tr>
</table>
答案 2 :(得分:2)
尝试使用这个JS .each函数。我在另一个答案中找到了这个,无法找到用户给予信用。如果这样可以正常工作,请告诉我再次搜索。
var seen = {};
$('#aTable td').each(function()
{
var $this = $(this);
var index = $this.index();
var txt = $this.text();
console.log(txt);
if (seen[index] === txt)
{
$($this.parent().prev().children()[index]).attr('rowspan', 2);
$this.hide();
}
else
{
seen[index] = txt;
}
});
为了实现这一目标,&#34; 94&#34;应该在所有单元格中重复(这是垂直对齐数据的基本思路吗?为了使它成为一个共同的值)。 在那之后,它基本上做的是,它合并并保留单个值。
答案 3 :(得分:1)
您可以使用:
td:nth-child(3) {
position: relative;
transform: translateY(calc(-100% * (6/2))); /*/number rows is 6 /*/
}
td:nth-child(3) {
position: relative;
transform: translateY(calc(-100% * (6/2)));
}
&#13;
<table style="width:500px; text-align: center">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
&#13;
答案 4 :(得分:0)
问题是您的 94 行位于特定行内,目前是底线,这就是您的94位于底部的原因。
你可以尝试的是一个保证金顶部,如下所示:
.center {
margin-top : -70px;
}
<table style="width:100%; text-align: center">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
</tr><tr>
<td>Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td><p class="center">94</p></td>
</tr>
</table>
但它不会响应,这意味着您必须弄清楚每个案例都是为了适应您的响应代码。