我想知道是否存在优雅方式来水平对齐3 divs
而不使用 float
css property。
HTML:
<div id="parent">
<div id="first">Left</div>
<div id="second">Middle</div>
<div id="third">Right</div>
</div>
我问这个问题是因为父div
没有float
属性,并且向子项添加float
会导致页面大小调整问题。
答案 0 :(得分:36)
您可以将display:inline-block
或display:table-cell
与内部内容结合使用。
#parent{ display:flex; justify-content: space-between; }
#parent{ display:table; width:100%; }
#parent div{ display:table-cell; }
#first{ text-align:left; }
#second{ text-align:center; }
#third{ text-align:right; }
#parent{ width:100%; white-space:nowrap; }
#parent div{ display:inline-block; width:33.3%;}
#first{ text-align:left; }
#second{ text-align:center; }
#third{ text-align:right; }
答案 1 :(得分:13)
添加到notulysses&#39; answer,如果古老的浏览器支持不是问题,您可以使用css3 Flexible_boxes。
通过应用display:flex
,子div将水平对齐(默认情况下)
#parent{
display:flex;
justify-content:space-around;
}
这样可以避免使用inline-block
元素
答案 2 :(得分:1)
#parent {
display: table;
}
#first, #second, #third {
display: table-cell;
}
答案 3 :(得分:1)
您可以使用以下修复程序来调整问题&#34;而不是找到浮动的解决方法。 (至少我认为是由它造成的):
使用花车后,应始终清除浮子。您可以通过在课程中添加额外的<div>
来完成此操作。
<div id="parent">
<div id="first">Left</div>
<div id="second">Middle</div>
<div id="third">Right</div>
<div class="clear"></div>
</div>
在CSS中:
.clear{
clear: both;
}
答案 4 :(得分:0)
答案 5 :(得分:0)
使用下面的CSS,您可以实现目标:
#parent{
width:140px;
height:30px;
border:1px solid #CCC;
}
#first{
width:19px;
height : inherit;
display:inline;
border : 1px solid red;
}
#second{
width:19px;
height : inherit;
display:inline;
border : 1px solid green;
}
#third{
width:19px;
height : inherit;
display:inline;
border : 1px solid blue;
}