CSS垂直alignment浮动div
你好,我有一个div(#wrapper)包含2个div并排站立。 我想右边的div被垂直alignment。 我在我的主包装上尝试了垂直alignment:中间,但它不工作。 这让我疯狂! 希望有人能帮忙。 预先感谢您的回复。 干杯。 马克。
http://cssdesk.com/LWFhW
我的HTML:
<div id="wrapper"> <div id="left-div"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div id="right-div"> Here some text... </div> </div>
我的CSS:
#wrapper{ width:400px; float:left; height:auto; border:1px solid purple;} #left-div{ width:40px; border:1px solid blue; float:left;} #right-div{ width:350px; border:1px solid red; float:left;} ul{ list-style-type: none; padding:0; margin:0;}
浮动的元素你没有运气。 他们不服从垂直alignment,
你需要display:inline-block
代替:
谨防
display: inline-block;
要小心display: inline-block;
因为它将元素之间的白色空间解释为真正的白色空间。 它不会像display: block
一样忽略它。
我推荐这个:
将包含元素的font-size
设置为0
(零),并将font-size
重置为像这样的元素中所需的值
ul { margin: 0; padding: 0; list-style: none; font-size: 0; } ul > li { font-size: 12px; }
在这里看到一个演示: http : //codepen.io/HerrSerker/pen/mslay
CSS
#wrapper{ width:400px; height:auto; border:1px solid green; vertical-align: middle; font-size: 0; } #left-div{ width:40px; border:1px solid blue; display: inline-block; font-size: initial; /* IE 7 hack */ *zoom:1; *display: inline; vertical-align: middle; } #right-div{ width:336px; border:1px solid red; display: inline-block; font-size: initial; /* IE 7 hack */ *zoom:1; *display: inline; vertical-align: middle; }
你可以用显示表格和显示表格单元格很容易地做到这一点。
#wrapper{ width:400px; float:left; height:auto; display: table; border:1px solid green; } #right-div{ width:356px; border:1px solid red; display: table-cell; vertical-align: middle; }
编辑:其实很快就乱了CSS桌上你 – http://cssdesk.com/RXghg
我意识到这是一个古老的问题,但我认为这将是有益的浮动垂直alignment问题的解决scheme。
通过在你想浮动的内容周围创build一个包装器,你可以使用:: after或者:: before伪select器在你的包装器中垂直alignment你的内容。 您可以在不影响alignment的情况下调整所需内容的大小。 唯一的问题是包装纸必须填满容器的100%高度。
http://jsfiddle.net/jmdrury/J53SJ/
HTML
<div class="container"> <span class="floater"> <span class="centered">floated</span> </span> <h1>some text</h1> </div>
CSS
div { border:1px solid red; height:100px; width:100%; vertical-align:middle; display:inline-block; box-sizing: border-box; } .floater { float:right; display:inline-block; height:100%; box-sizing: border-box; } .centered { border:1px solid blue; height: 30px; vertical-align:middle; display:inline-block; box-sizing: border-box; } h1 { margin:0; vertical-align:middle; display:inline-block; box-sizing: border-box; } .container:after, .floater:after, .centered:after, h1:after { height:100%; content:''; font-size:0; vertical-align:middle; display:inline-block; box-sizing: border-box; }
我的修改唯一的缺点是你有一个设置的高度…我不知道这是否对你来说是一个问题。