在Stackoverflow上有几个问题需要关于使用CSS(div)水平对齐元素。一般来说,这是通过使用浮动块或display: inline-block
完成的。将文本与DIV水平对齐
但是,我有一个非常简单的要求,并且我很难使用这些技术中的任何一种来使其完美工作。我只是想将一行文本与DIV元素水平对齐。
所以,基本上,有3种方式这样做的:
方法1(使用display: inline-block
)
<div style = "display: inline-block;">Foo</div>
<div style = "display: inline-block; padding-left: 19px">
<div style = "border: 1px solid #000000; height: 1em; width: 100px"></div>
</div>
方法2(使用float
)
<div style = "width: 150px">
<div style = "float:left">Foo</div>
<div style = "float:right">
<div style = "border: 1px solid #000000; height: 1em; width: 100px"></div>
</div>
</div>
方法3 方法3使用。(请不要杀我)一个<table>
:
<table style = "width: 150px" cellpadding = "0" cellspacing = "0" border = "0">
<tr>
<td style = "width: 40px">
Foo
</td>
<td>
<div style = "border: 1px solid #000000; height: 1em; width: 100px"></div>
</td>
</tr>
</table>
这三种方式呈现这样的Firefox:
好吧,首先,用方法1(问题inline-block
)是文本不与DIV元素垂直对齐(居中),看起来很尴尬。相反,DIV的底部边框与文本底部对齐。我试着调整填充和边距来解决这个问题,但它没有帮助。
方法2(float
s)看起来不错,但方法2的问题是如果文本更改为更长的内容会发生什么?嗯......
所以使用花车的问题是,如果文本变长,DIV元素被撞倒到下一行。所以这是不可接受的。请注意方法1(inline-block
)没有此问题。
满足所有要求的唯一方法是使用<table>
的方法,但我不想使用它,因为...好吧,reasons。
那么,这里最好的解决方案是什么。我如何才能使用CSS的DIV获得与方法3相同的结果,该方法使用<table>
?
没有跨度,缩进,边距,也没有javascript? – 2012-07-15 21:20:02