CSS3 Flexible Box Model - Boxes应根据可用空间更改位置

时间:2014-07-28 21:32:10

标签: html css html5 css3 firefox

请查看以下JSFiddle并拖动以调整"结果"窗口正是我想要在(至少)Firefox,Chrome和Internet Explorer 11上实现的目标:

http://jsfiddle.net/4tKZf/

请注意,在查看JSFiddle时必须使用Firefox,否则您将看不到我想要的行为。相反,您会看到我想要避免的行为。

基本上我想在页面上放一些盒子。当有足够的空间时,我希望页面并排显示所有框,当没有足够的空间时,我希望这些框开始像在Firefox中那样重新定位完全。大约一年前,我一直试图在这个问题上重新发明轮子,这是一种痛苦,并不会一直有效。现在我已经找到了CSS3 Flexible Box模型,看来这已经为我做了,但它只适用于我。

如果可能的话,我想要使用ul / li来实现此效果。

HTML:

<div class="box">
    <div class="number">1</div>
</div>
<div class="box">
    <div class="number">2</div>
</div>
<div class="box">
    <div class="number">3</div>
</div>
<div class="box">
    <div class="number">4</div>
</div>
<div class="box">
    <div class="number">5</div>
</div>

CSS:

.box
{
width: 40px;
height: 40px;
background-color: black;
margin: 40px;
color: #555;
font-family: arial;
padding: 0px;

display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;
}

.number
{
padding: 0px;
margin: 0px;
text-align: center;
width: 20px;
height: 20px;
}

我尝试添加以下内容,但它似乎根本不会影响Internet Explorer 11或Chrome:

/* Internet Explorer 10 */
display:-ms-flexbox;
-ms-flex-pack:center;
-ms-flex-align:center;

/* Safari, Opera, and Chrome */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;

/* W3C */
display:box;
box-pack:center;
box-align:center;

感谢您的帮助! :)

2 个答案:

答案 0 :(得分:2)

您使用的是旧版本的flexbox。使用更新的规范:http://jsfiddle.net/D398s/。应该适用于Chrome和Firefox。

HTML:

<div class = "container">
    <div class="box">
        <div class="number">1</div>
    </div>
    <div class="box">
        <div class="number">2</div>
    </div>
    <div class="box">
        <div class="number">3</div>
    </div>
    <div class="box">
        <div class="number">4</div>
    </div>
    <div class="box">
        <div class="number">5</div>
    </div>
</div>

CSS:

* {
    margin: 0;
    padding: 0;
}

body {
    padding: 10px;
}

.container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-flow: row wrap;
    flex-flow: row wrap;
}

.container > div {
    margin: 40px;
    height: 40px;
    -webkit-flex: 0 0 40px;
    flex: 0 0 40px;
    background-color: #aaa;
    text-align: center;
}

.container > div > div {
    line-height: 40px;
}

答案 1 :(得分:0)

您需要设置display: flex的容器,并且您需要样式属性的-webkit-版本。

That works in Chrome for me.