Flexbox对齐网格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flexbox对齐网格相关的知识,希望对你有一定的参考价值。

我试图用flexbox创建相同的基本对齐网格。如果我放置一些图像并贴上弹性包装,它看起来像这样:

#wrap {
  display: flex;
  flex-wrap: wrap;
  max-width: 800px;
}

.box {
  margin: 1px;
  position: relative;
  text-align: center;
  height: 100%;
}

img {
  position: relative;
  display: block;
}
<div id="wrap">
  <div class="box"><img src="https://via.placeholder.com/250x150" /></div>
  <div class="box"><img src="https://via.placeholder.com/400x150" /></div>
  <div class="box"><img src="https://via.placeholder.com/500x150" /></div>
  <div class="box"><img src="https://via.placeholder.com/150x150" /></div>


</div>

效果很好,但是只要宽度变小,图像就会换行(显然是因为换行)。我想知道这是否可以做出响应,以便无论可用宽度如何都能保持此布局?但是它必须是动态的,而无需将单独的类应用于具有自定义CSS的图像。

或者如果没有javascript不能做到这一点?

答案

这里是根据我的理解而摆弄的东西。https://jsfiddle.net/m4j1e3tb/

我改变的事情:

  • 每行将是其自己的伸缩容器

  • flex容器不会包装

  • 在作为弹性项目的“盒子”上,我添加了flex-shrink: 1,当空间“用完”时,它告诉盒子缩小了]]]

.box {
  margin: 1px;
  position: relative;
  text-align: center;
  max-width: 100%;
  flex-shrink: 1;
}

编辑:格式化。抱歉,我还是stackoverflow的新手。

以上是关于Flexbox对齐网格的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS Grid 和 Flexbox 水平对齐位于不同网格单元格中的元素

用于页眉、粘滞页脚和垂直对齐的中间内容的 CSS Flexbox 或 CSS 网格?

如何将 CSS 网格内的弹性项目与其网格线对齐?

如何居中对齐 flexbox 容器? [复制]

没有行的 Flexbox 垂直网格/仪表板

如何在多行flexbox中对齐左最后一行/行[重复]