我想不出一种优雅的方式来让我的div显示如下,在CSS
---------------------------------------------------------
| |
| child div 1 child div 2 child div 3|
| |
---------------------------------------------------------
的想法是,这个框是一个父div,它可以是任意宽度,这三个子div总是排成一行,1在左边,2在中间,3在右边。
额外的好处是,如果它们可以在父div中垂直居中对齐,那将是非常棒的,但我可以不这样做。
TIA。
您需要设置父div的宽度并使用百分比来设置子div的宽度,或者您需要为子div设置固定宽度并允许父div围绕它们展开。下面是一些可以以
开头的代码:HTML:<div class="block">
<div class="sidebar">
</div><div class="main">
</div><div class="sidebar">
</div>
</div>
注意闭合的</div>
和随后的<div>
是如何接触的。对于内联元素和内联块元素,它们之间不能有空格。
.block {
border: 1px solid;
display: inline-block; }
.block .sidebar {
background: red;
width: 100px;
height: 40px;
vertical-align: middle;
display: inline-block; }
.block .main {
background: blue;
width: 400px;
height: 100px;
vertical-align: middle;
display: inline-block; }
.block div { margin: 0; }
.block p { margin: 0; }
如果您决定使.block
固定宽度,则移除display: inline-block
。
仅适用于.block
没有固定宽度的情况:
如果你需要水平居中.block
,你的margin: 0 auto
将无法工作,因为.block
是一个内联元素,这是需要使它环绕固定宽度的元素。您需要将text-align: center
添加到它的父元素(如果.block
是最外层的元素,则可能是body
元素),然后将text-align: left
添加到.block
。
预览:http://jsfiddle.net/Wexcode/jfQqF/
Table-row
list-display: table-row;
在父div和list-display: table-cell;孩子们。然后右对齐子div 3。优点是不需要指定宽度。
float: left;
为所有三个子div设置一个宽度,并使用:float: left;你可以在父元素中使用clear: both;正确清除浮动