html - 行为之间的 Flexbox 空间与换行相结合

标签 html css flexbox

<分区>

我正在使用 flexbox 创建一个漂亮的 tiles 网格,当 tiles 不适合一行时,它会自动换行。

我使用 justify-content: space-between 这样瓦片就粘在父容器的左右两边,任何剩余的空间只分布在“中间”而不是左边和右边。

任何其他 justify 选项也会在外部两个 flex 元素的左侧和右侧放置空间。

问题是,当某行的图 block 数量与前一行的图 block 数量不同时,我希望最后一行的图 block 向左对齐。这可以仅使用 flex 属性来完成吗?

当前结果:

▀ ▀ ▀
▀   ▀

期望的结果:

▀ ▀ ▀
▀ ▀

HTML

<div class="browser">
        <div @click='projectClicked' class="case">
            <h3>Project</h3>
        </div>

        <div @click='projectClicked' class="case">
            <h3>Project</h3>
        </div>

        <div @click='projectClicked' class="case">
            <h3>Project</h3>
        </div>

        <div @click='projectClicked' class="case">
            <h3>Project</h3>
        </div>

        <div @click='projectClicked' class="case">
            <h3>Project</h3>
        </div>
    </div>

CSS

.browser {
    width: 700px;
    display:flex;
    justify-content: space-between;
    padding-bottom:100px;
    flex-wrap:wrap;
    border:1px solid red;
}
.case {
    flex: 0 0 200px;
    background-color:#ccc;
    height:100px;
    border:1px solid blue;
    margin-bottom:10px;
}

Codepen

最佳答案

这很烦人,但你不能为此使用 flexbox。

更好的方法是改用 CSS 网格,然后应用

/* for space-around style */
.fixed-grid--around{
  grid-template-columns: repeat(auto-fill, minmax(150px,1fr));
  justify-items: center;
}
/* for space-between style*/
.fixed-grid--between{
  grid-template-columns: repeat(auto-fit, 150px);
  justify-content: space-between;
}
/* both should run fixed width elements equal to the declared in the container */ 
.grid-element{
  width: 150px;
}

通过将网格列的最小宽度设置为它们的元素宽度,将最大列宽设置为 1 fr,我们可以让它们均匀分布周围的空间。对于 space-between 样式,autofit 和 space-between 可以解决问题。

所以它添加列来填充容器,均匀分布它们之间的空间,直到可以添加另一列,并根据需要换行。正是我们一直希望 Flexbox 能做到的。

我在探索问题之前做的笔:

https://codepen.io/facundocorradini/pen/XVMLEq

如果您要使用它,请确保为不支持网格的浏览器添加一些回退。可能是 float 、内联 block 、 flex 或其他任何东西。 CSS 网格是 really good at overriding the fallbacks ,所以申请起来相当容易。

关于html - 行为之间的 Flexbox 空间与换行相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239687/

相关文章:

html - CSS Sprite 现在显示一次上传的 htr

html - safari flex 不适用于 clearfix hack

javascript - 如何在html中隐藏复选框?

javascript - Node.js 聊天应用附加样式文本

javascript - 如何在字符串中包含隐藏的 HTML 元素 - javascript - datatables - jquery

css - 求css/scss选择器改变:before behavior on :focus

html - 中心对齐图像

javascript - 如何获取已更改元素的外部样式表数据?

html - css - 使用 grid-auto-column 创建动态宽度

css - 有没有办法删除这个 flex 元素中多余的空白?