当flex-flow设置为column wrap时,Flex容器宽度

时间:2013-10-16 15:24:31

标签: html5 css3 google-chrome flexbox

我有一个固定高度和display: flex的容器。我希望通过设置-webkit-flex-flow: column wrap;以小柱优先的方式放置孩子。

http://jsfiddle.net/wNtqF/1/

  1. 任何人都可以解释一下chrome如何计算容器div(带绿色边框的div)的最终宽度,以及为什么在每个红色项目的右边留下如此多的可用空间。我想要的是让容器的宽度适合所有孩子,而不需要额外的空白空间。

  2. 如果使用纯css是不可能的,你可以为我提供另一种选择吗?

  3. 我正在使用Chrome v 29.0.1547.76

    重现它的代码是:

    <!DOCTYPE html>
    <html>
    <head>
        <style>
        .flex-container {
            position: fixed;
            height: 90%;
    
            padding: 0;
            margin: 0;
            list-style: none;
            border: 6px solid green;
    
            display: -webkit-box;
            display: -moz-box;
            display: -ms-flexbox;
            display: -webkit-flex;
            display: flex;
    
            -webkit-flex-flow: column wrap;
            justify-content: flex-start
            align-content: flex-start;
            align-items: flex-start
        }
    
    
        /** Just to show the elements */
        body {
            margin: 0;
            padding: 0;
        }
        .flex-item {
            background: tomato;
            padding: 5px;
            width: 100px;
            height: 100px;
            margin-top: 10px;
    
            line-height: 150px;
            color: white;
            font-weight: bold;
            font-size: 3em;
            text-align: center;
        }
        </style>
    </head>
    <body>
        <ul class="flex-container">
            <li class="flex-item">1</li>
            <li class="flex-item">2</li>
            <li class="flex-item">3</li>
            <li class="flex-item">4</li>
            <li class="flex-item">5</li>
            <li class="flex-item">6</li>
        </ul>
    </body>
    

1 个答案:

答案 0 :(得分:-1)

Chrome自动将空格放在div和边框顶部之间,为了解决这个问题,你可以使用:

  

margin-bottom:100%;

为什么这样? margin-bottom:100%重置元素并向上移动项目。 您已尝试过:

execute()

但是这并不起作用,因为正文散布了页面html而不是单个元素。
完整的代码将在这里:

&#13;
&#13;
    body {
    margin: 0;
    padding: 0;
}
&#13;
.flex-container {
    position: fixed;
    height: 90%;
    padding: 0;
    margin: 0;
    list-style: none;
    border: 6px solid green;

    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-flow: column wrap;
    justify-content: flex-start
    align-content: flex-start;
    align-items: flex-start
}


/** Just to show the elements */
body {
    margin: 0;
    padding: 0;
}
.flex-item {
    background: tomato;
    padding: 5px;
    width: 100px;
    height: 100px;
    margin-bottom: 100%;
    line-height: 150px;
    color: white;
    font-weight: bold;
    font-size: 3em;
    text-align: center;
}
&#13;
&#13;
&#13;