html - 在 2 列或更多列中从上到下、从左到右堆叠可变高度、固定宽度的 div

标签 html css layout flexbox

<分区>

我想在固定宽度可变高度中布局可变高度固定宽度 div em> 容器,因此子 div 看起来以一种砌体模式堆叠在一起,占据 2 列或更多列。

这是我想要的:

enter image description here

下面是我使用 float 或 FlexBox 得到的结果:

enter image description here

这是密码笔:http://codepen.io/anon/pen/xOLwVJ

<div class="container">
  <div class="item">
  </div>
  <div class="item" style="height:250px;">
  </div>
  <div class="item" style="height:150px;">
  </div>
  <div class="item" style="height:200px;">
  </div>
  <div class="item" style="height:180px;">
  </div>
</div>

此代码仅引用CodePen,并不代表此处的2张图片。

Flexbox 和 Floats 似乎都不起作用。我最接近让它工作的方法是使用列,但是它们在中间切掉了子 div - 文本没问题,但实际框不是这样。

我想要没有 JavaScript 的纯 HTML/CSS 解决方案。

最佳答案

事实证明,CSS 列毕竟是可能的。诀窍是在子元素上设置 display:inline-block 以防止子 div 在列换行的中间被切割。

<div class="container">
  <div class="item">
  </div>
  <div class="item" style="height:250px;">
  </div>
  <div class="item" style="height:150px;">
  </div>
  <div class="item" style="height:200px;">
  </div>
  <div class="item" style="height:180px;">
  </div>
</div>

还有 CSS:

.container {
  margin: 0 auto;
  width:600px;
  background:#ddd;
  display: block;
  -webkit-column-count: 2;
  -moz-column-count: 2;
  column-count: 2;
}
  .item {
    margin:10px;
    background:red;
    width:270px;
    height:100px;
    display:inline-block; /* this is to prevent div being cut in the middle when it flows onto the next column */
  }

代码笔:http://codepen.io/anon/pen/GqvoBO

关于html - 在 2 列或更多列中从上到下、从左到右堆叠可变高度、固定宽度的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227757/

上一篇:css - 如何设置 dropDownButton 的样式?

下一篇:html - 右浮动在我的情况下不起作用,我该怎么办?

相关文章:

html - 卸载图像下的自定义替代文本

android - 重复 +id 布局范围的可能用例是什么?

Android 如何使具有 minWidth 的 ImageView 有边框?

android - Android 的小 ProgressDialog "spinner"

html - 平等过渡

html - HTML MailTo 是否真的发送电子邮件?如果是这样怎么办?

Javascript 变量转换为 href ="mailto:"字符串

javascript - 如何在单击按钮之前禁用输入

javascript - jQuery:将鼠标悬停在子菜单项上时保持子菜单打开

javascript - 如何防止在 Firefox 中点击 HTML5 视频控件时出现事件冒泡