4

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

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

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

  2. 如果纯 css 不可能,您能否为我提供实现此目标的替代方法?

我正在使用 Chromev 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>
4

1 回答 1

-1

Chrome 会自动在 div 和边框顶部之间放置空间,要解决此问题,您可以使用:

保证金底部:100%;

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

    body {
    margin: 0;
    padding: 0;
}

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

.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;
}
<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>

于 2016-05-08T17:27:22.003 回答