【问题标题】:Flexbox to fill out row and determine the number of children per rowFlexbox 填充行并确定每行的子项数
【发布时间】:2016-01-11 20:21:03
【问题描述】:

我在一个容器里有一堆盒子。我不知道一排可以放多少个盒子,屏幕越大,盒子应该越多。但是我希望每一行都被完全填满,并调整框的大小(在 100px 到 150px 之间)以确保每一行都被填满。

http://jsfiddle.net/ssxu5moy/11/

.container2 {
    width:100%;
    height: 100px;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    align-content: stretch;
}

.box {
    border: 1px solid purple;
    background: blue;
    align-self: stretch;
    min-width: 100px;
    max-width: 150px;
}

<div class="container2">
    <div class="box box1">
    </div>
    <div class="box box2">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
    <div class="box box3">
    </div>
</div>

我已经在 javascript 中做到了这一点,它工作正常,但我想改为更简单的 flexbox,但我很难让它工作。这在 flexbox 中是否可行?

【问题讨论】:

  • 100-150px 的框大小有什么弹性吗?如果只有一个盒子换到下一行,该行应该如何填充?
  • @Michael_B 是的,你说得对,我的要求存在矛盾。我希望所有框的大小相同,拉伸应该只针对初始行中的框,我希望最后一行框与所有其余框的大小相同。
  • @Michael_B 我认为 OP 不会。他希望第二行中的盒子与第一行中的盒子宽度相同——即使它们会增长和缩小。因此,如果顶部有 5 个宽度为 100px 的框,第二个有 2 个框,则这些框应该是 100px,但如果屏幕变大并且顶行现在有 6 个框,宽度为150px,最后一行有一个盒子,盒子的宽度应该是150pxflexbox 真的没有办法在本地实现这一点。因为屏幕调整大小时有一个灵活的宽度。

标签: javascript css flexbox


【解决方案1】:

是的!你可以这样做。 max-width 使盒子停在 150px 这似乎不是您想要的,因为您希望每个盒子在换行后填充行中的剩余空间吗?

这是一个更新的小提琴: http://jsfiddle.net/disinfor/ssxu5moy/12/

我在你的 CSS 中唯一改变的是 min-widthmax-width 到 flex 属性:

CSS:

.box {
    border: 1px solid purple;
    background: blue;
    align-self: stretch;
    flex:1 0 100px;
}

如果我理解您的问题,这应该就是您要找的。 警告: flex 属性需要浏览器前缀。

编辑:这里有一些关于 flex 属性简写的简单读物: https://css-tricks.com/almanac/properties/f/flex/

如果链接消失: 这是 flex-grow、flex-shrink 和 flex-basis(分别)的简写。

【讨论】:

  • 除了问题说每个框必须在 100px 和 150px 之间。这个答案不符合这一点。
  • 当然,但是如果max-size 受到限制,我看不出如何完全填充行。这就是为什么我在回答前加上一个假设。
  • 非常感谢。有什么办法可以让最后一行的盒子和其他盒子的大小一样(让它不那么拉伸)?
  • 我检查了这个答案,因为它回答了最初提出的问题,但如果你能帮助我解决最后一行问题(或者如果不可能的话,请告诉我),我将不胜感激。
  • 我认为您的工作 JS 是唯一可能发生这种情况的方法,因为您可以主动获取第一行中框的宽度并将所有框设置为相同的大小。
猜你喜欢
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多