收缩包装并将容器对中以用于内嵌块元件

Jam*_*mes 13 css containers center

我在几行上有一堆内联块元素,我想水平居中.内联块元素都具有相同的固定大小,但我希望中心能够处理页面大小调整以及添加或删除元素.

我已经删除了html/css并删除了为了清晰起见的中心尝试.它在http://jsfiddle.net/fe25H/1/

如果您调整结果窗口的大小以便第三个内联块元素下降,容器将填充宽度,我们得到:

-----------------BODY------------------
|                                     |
||-------------CONTAINER-------------||
||-INLINEBLOCK---INLINEBLOCK--       ||
|||____________||____________|       ||
||-INLINEBLOCK--                     ||
|||____________|                     ||
||___________________________________||
|_____________________________________|
Run Code Online (Sandbox Code Playgroud)

而不是这个:

-----------------BODY------------------
|                                     |
|   |----------CONTAINER---------|    |
|   |-INLINEBLOCK---INLINEBLOCK--|    |
|   ||____________||____________||    |
|   |-INLINEBLOCK--              |    |
|   ||____________|              |    |
|   |____________________________|    |
|_____________________________________|
Run Code Online (Sandbox Code Playgroud)

根据ptriek关于JavaScript解决方案的答案进行编辑:

Ptriek的代码是一个有用的起点; 它适用于特定情况,但不适用于一般情况.我大部分时间都把它重写为更灵活(参见http://jsfiddle.net/fe25H/5/).

ptr*_*iek 3

想了想之后,我同意Wex上面的评论。

所以我摆弄了一个 JavaScript 解决方案(jQuery) - 我不是这方面的专家,所以代码可能会得到改进 - 但我想它正是你所需要的:

var resizeContainer = function () {
    var w_window = $(window).width();
    var w_block = $('.inlineblock').width();
    if (w_window < w_block * 3 && w_window >= w_block * 2) {
        $('.container').width(w_block * 2);
    } else if (w_window < w_block * 2) {
        $('.container').width(w_block);
    }  else {
        $('.container').width(w_block * 3);
    } 
};


$(document).ready(resizeContainer);
$(window).resize(resizeContainer);
Run Code Online (Sandbox Code Playgroud)
body {
    text-align:center;
}
.container {
    display: inline-block;
    background-color: #aaa;
    text-align:left;
}
.inlineblock {
    display: inline-block;
    width: 200px;
    height: 200px;
    background-color: #eee;
}
Run Code Online (Sandbox Code Playgroud)
<div class='container'>
    <div class='inlineblock'></div>
    <div class='inlineblock'></div>
    <div class='inlineblock'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/ptriek/fe25H/4/