我不知道这是否是结束这个问题的正确方法,但我要感谢所有回答我问题的人。所以我想不可能只用 CSS 来创建这种行为。需要 jQuery 或媒体查询来获得正确的行为。
这是我最终解决问题的方法(实际上使用 jQuery):http:
//jsfiddle.net/Ewtx2/
HTML
<div id='container'>
<div id='outline'>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
<div class='innerbox'></div>
</div>
</div>
CSS
#container {
width:100%;
text-align:center;
border: 1px red dashed;
}
#outline {
text-align: left;
font-size:0;
display: inline-block;
padding-left:5px;
padding-bottom:5px;
/* for ie6/7: */
*display: inline;
border: 1px black dashed;
zoom:1;
}
.innerbox {
display:inline-block;
height:50px;
margin-top:5px;
margin-right:5px;
width:50px;
background:red;
}
jQuery
var boxAmount = 0;
var newWidth = 0;
setNewWidth();
$(window).resize(function() {
setNewWidth();
});
function setNewWidth() {
// get container width and check how many boxes fit into it (account margin/padding)
boxAmount = ($('#container').width() - 5) / ($('.innerbox').width() + 5);
boxAmount = Math.floor(boxAmount);
// multiply the box amount with the box width to get the new width to hold the box amount + padding
if(boxAmount <= $('.innerbox').length) {
newWidth = boxAmount * $('.innerbox').width() + boxAmount * 5;
}
// set the new calculated width
$('#outline').width(newWidth);
}
我编写了一个脚本,它采用容器宽度,将其除以单个盒子的大小,将其放置在地板上,这为我们提供了适合容器的盒子数量。然后它将这个盒子的数量乘以盒子的宽度,然后给我们轮廓的新尺寸。新大小设置为轮廓,因此带有所有框的轮廓始终保持居中,右侧不会出现奇怪的空白。