CSS Vertical align不适用于float

use*_*300 75 html css vertical-alignment

我如何使用vertical-align,以及floatdiv性能?该vertical-align精品工程,如果我不使用float.但是,如果我使用浮动,那么它不起作用.对我来说,使用float:right最后一个div 是很重要的.

我正在尝试跟随,如果你从所有div中删除浮动,那么它将工作正常:

<div class="wrap">
    <div class="left">First div, float left,  has more text.</div>
    <div class="left2">Second div, float left </div>
    <div class="right">Third div, float right</div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.wrap{
    width: 500px;
    overflow:hidden;    
    background: pink;
}

.left {
    width: 150px;       
    margin-right: 10px;
    background: yellow;  
    float:left;
    vertical-align: middle;  
    display:inline-block

}

.left2 {
    width: 150px;    
    margin-right: 10px;
    background: aqua;
    float:left;
    vertical-align: middle;   
    display:inline-block
}

.right{
    width: 150px;
    background: orange;
    float:right;
    vertical-align: middle;
    display:inline-block
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

And*_*s B 87

您需要设置行高.

<div style="border: 1px solid red;">
<span style="font-size: 38px; vertical-align:middle; float:left; line-height: 38px">Hejsan</span>
<span style="font-size: 13px; vertical-align:middle; float:right; line-height: 38px">svejsan</span>
<div style="clear: both;"></div>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/VBR5J/

  • 如果你为所有元素设置相同值的`line-height`,`vertical-align`就没用了.(http://jsfiddle.net/VBR5J/448/) (30认同)
  • 这个答案是对的.vertical-align属于CONTAINER(`div`),不属于单个元素.正确的解决方案 - 能够垂直对齐浮动元素 - 是将"vertical-align"和"line-height"放在CONTAINER上:`<div style ="border:1px solid red; vertical-align:middle ; line-height:38px;">`.删除`vertical-align:middle; line-height:38px;`来自span样式. (14认同)
  • @ToolmakerSteve 错了,这个答案是错的。Vertical-align 仅适用于内联元素、内联块或表格单元格(后者很奇怪)。添加 'float' 使 en 元素成为块元素。尽管如此,使用行高(并忽略垂直对齐)仍然是一种解决方案。 (2认同)

Ahs*_*hid 16

编辑:

垂直对齐 CSS属性指定内嵌,内联块或表格单元元件的垂直取向.

阅读本文了解vertical-align

  • 这不是答案 (4认同)

Gab*_*iel 8

实际上,垂直对齐不适用于浮动元素.那是因为float从文档的正常流中提升元素.你可能想要使用其他垂直对齐技术,比如基于变换,显示:table,绝对定位,line-height,js(也许是最后的手段)甚至普通的旧html表(如果内容是实际上是表格的.你会发现在这个问题上存在激烈的争论.

但是,这是你可以垂直对齐你的3个div:

.wrap{
    width: 500px;
    overflow:hidden;    
    background: pink;
}

.left {
    width: 150px;       
    margin-right: 10px;
    background: yellow;  
    display:inline-block;
    vertical-align: middle; 
}

.left2 {
    width: 150px;    
    margin-right: 10px;
    background: aqua; 
    display:inline-block;
    vertical-align: middle; 
}

.right{
    width: 150px;
    background: orange;
    display:inline-block;
    vertical-align: middle; 
}
Run Code Online (Sandbox Code Playgroud)

不确定为什么你需要固定宽度,显示:内联块和浮动.

  • 这个问题说“他需要float:right在最后一个元素上”,因此他可能需要最后一个元素位于容器的右侧。如何在您的答案中实现该目标? (2认同)