这个小提琴演示了这个问题:http: //jsfiddle.net/wrYsx/
相关代码:
<style>
#floater {
background-color: red;
height: 35px;
width: 35px;
float: right;
}
table {
width: 100%;
}
table tr td {
border: 1px solid green;
vertical-align: middle;
height: 35px;
}
</style>
<table>
<tr>
<td>
<div id='floater'></div>
some text
</td>
</tr>
</table>
<table>
<tr>
<td>
some text
</td>
</tr>
</table>
基本上,如果我有一个给定高度的 td,我可以使用 vertical-align: middle 将 td 中的东西居中。但是,当 td 中有另一个浮动元素时(在我的情况下是正确的),则不尊重垂直对齐,并且文本位于 td 的顶部。任何想法如何设置这个样式,以便您可以拥有一个带有垂直对齐和浮动元素的 td?
另外,我发现了这篇文章:stackoverflow.com/questions/2641615/table-cell-doesnt-obey-vertical-align-css-declaration-when-it-contains-a-floate 但是它不是我的解决方案,因为我可能需要浮动元素。我尝试使用定位来模拟相同的布局,但似乎我无法定位一个 td 单元格,以便我可以在其中使用 position: absolute 将“浮动”元素定位在右侧:0。