【发布时间】:2013-03-22 18:39:21
【问题描述】:
我想将下面模型中出现的三个 div 居中(都有“float:left”)。 这可能吗?
我不介意包装 div。
Text-align:center 和 display:inline-block 不适用于我的代码。
【问题讨论】:
我想将下面模型中出现的三个 div 居中(都有“float:left”)。 这可能吗?
我不介意包装 div。
Text-align:center 和 display:inline-block 不适用于我的代码。
【问题讨论】:
如果你想让它们居中,你不能浮动它们。更好的选择是将它们全部设为display: inline-block,这样您仍然可以将它们样式化为块元素,并且它们仍然会注意父包装器上的text-align: center。对于您提供的有限示例,这似乎是一个很好的解决方案。
为了考虑浏览器兼容性,您需要将它们更改为 <span> 而不是 <div>,然后再将 display: inline-block 添加到它们。这将在所有 IE7 及更高版本以及所有其他现代浏览器中得到支持。不支持 IE6,但it's only widely used in China anymore。
【讨论】:
div#wrapper {
width:960px;
margin: 0 auto;
}
编辑:
根据建议将完整代码从小提琴移到回答
<div id="outer-wrapper">
<div id="wrapper">
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
</div>
</div>
HTML
div#outer-wrapper{
border:2px solid black;
padding:10px;
width:100%;
}
CSS
div#wrapper{
width:99px;
margin:0 auto;
}
div {
width:33px;
height:20px;
}
div.one{
background:red;
float:left;
}
div.two{
background:blue;
float:left;
}
div.three{
background:green;
float:left;
}
【讨论】:
您也可以使用列表并获得相同的结果:
CSS:
.wrap
{
border:2px solid black;
width:100%;
}
ul
{
width:99px;
margin:0 auto;
height: 20px;
}
ul li
{
width:33px;
height:20px;
float: left;
margin: 0px;
padding: 0px;
}
ul li.red
{
background-color: red;
}
ul li.blue
{
background-color: blue;
}
ul li.green
{
background-color: green;
}
HTML:
<div class="wrap">
<ul>
<li class="red"> </li>
<li class="blue"></li>
<li class="green"></li>
</ul>
</div>
【讨论】:
试试这个:http://jsfiddle.net/nvpXx/3/
你可以用一个 inline-block 元素包裹你的浮动 div 并将它放在它的父元素中。
HTML
<div id="main">
<div class="wrap">
<div class="item">thing 1</div>
<div class="item">thing 2</div>
<div class="item">thing 3</div>
<div class="clear"></div>
</div>
</div>
CSS
#main {width: 600px; background-color: #eee; margin: 0 auto; padding: 10px; text-align: center;}
#main .item {float: left; border: 1px solid #ccc; margin: 5px; }
.clear {clear: both;}
.wrap { display: inline-block; padding: 5px; bordeR: 1px solid black; margin: auto;}
潜在的陷阱
如果您有太多浮动项目以使其换行到第二行,则此方法效果不佳。此时,div.wrap 扩展到其容器的 100%,因此一切都偏离了中心。
【讨论】:
试试这个,保持简单:
<ul>
<li> one </li>
<li> two </li>
<li> three </li>
</ul>
<style>
ul{margin:0 auto;max-width:500px}
ul li{float:left;margin:0 auto 1em;text-align:center;width:33%}
</style>
这将使其响应,尽管它在某些点上中断,它有助于为最大宽度创建媒体查询:
<style>
@media screen and (max-width:520px){ ul li{float:none} }
</style>
【讨论】:
顾名思义,浮动完全独立于它们的容器。因此,您不能根据容器将它们居中,因为它们不会知道容器。
【讨论】:
希望这会有所帮助:
<body>
<div style="width:306px; border:#333333 1px solid; margin-left:auto; margin-right:auto">
<div style="width:100px; border:#333333 1px solid; float:left;">div A</div>
<div style="width:100px; border:#333333 1px solid; float:left;">div B</div>
<div style="width:100px; border:#333333 1px solid; float:left;">div C</div>
</div>
</body>
【讨论】:
我要做的是为它们添加一个容器 div。
然后添加overflow:auto,让容器div环绕3个div,然后设置容器div居中,margin:0 auto。
【讨论】: