[英]Vertical alignment in table-cell together with floating div
我有以下(示例)html代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>TH-Alignment</title>
<style type="text/css">
th {
border: 1px solid #333;
vertical-align: middle;
}
div.sb {
float: right;
width: 4px;
height: 26px;
background-color: #999;
}
</style>
</head>
<body>
<table cellspacing="0" cellpadding="0">
<colgroup>
<col width="120" />
<col width="120" />
</colgroup>
<thead>
<tr>
<th>
<div class="sb"></div>
<div>Heading 1</div>
</th>
<th>
<div>Heading 2</div>
</th>
</tr>
</thead>
</table>
</body>
</html>
第二列中的div是垂直居中的,第一列中的div不是(始终位于表格单元格的顶部)。 为什么第一列中的浮动div会影响表格单元格中另一个div的垂直对齐?
提前致谢。
如果展开th
的高度,您会注意到元素仍然垂直对齐到中间。
看到这个小提琴示例 !
这里的问题是line-height
。
由于您在th
一个元素上有更多元素,并且其中一个元素具有定义的height
,因此所有元素都对齐到th
的中间,但在它们之间,它们与当前line-height
的高度对齐,未定义并由font-size
或父元素定义计算。
由于浮动元素的height
为26px
,因此它会向下增长,但是文本的元素没有定义line-height
因此它的height
等于文本内部提供的font-size
,因此永远不会到达其中间漂浮的兄弟姐妹。
要解决此问题,您需要使用:
line-height: 26px;
设置line-height
高等于浮动元素的height
,从而将文本与浮动元素的中间对齐并解决垂直对齐的视觉方面。
使用该工作解决方案 查看此 小提琴示例 !
注意:一个元素不会影响另一个元素,因为您怀疑它们只是没有足够的声明来在它们之间进行连贯的对齐!
默认情况下,文本和图像与baseline
对齐,如果没有给baseline
line-height
,则baseline
为font-size
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.