防止浮动div包装错误

时间:2019-04-12 19:14:18

标签: html css css-float

这些内部div的宽度相同,但高度可变。外部div是可变的,因此我们不知道每行上将容纳多少个。我想防止不必要的换行,如以下出色的艺术示例所示:

enter image description here

在没有Java脚本的CSS中执行此操作的任何方法吗?这是我现在拥有的:

.outer_div {
    overflow: hidden;
    text-align: left;
}
.inner_div {
    float: left;
    width: 200px;
}

2 个答案:

答案 0 :(得分:1)

如果在父容器上使用CSS flexbox并允许其内容换行,即设置flex-wrap: wrap,则应该能够获得所需的布局。

这是一个概念验证示例,使用ES6可以为各个盒子简单地生成随机高度,以进行演示。

const elements = Array.from(document.querySelectorAll('.inner_div'));

elements.forEach(element => {
  element.style.height = `${Math.round(Math.random() * 100) + 50}px`;
});
.outer_div {
  display: flex;
  flex-wrap: wrap;
}

.inner_div {
  width: 200px;
  margin: 5px;
  height: 50px;
  background-color: steelblue;
}
<div class="outer_div">
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
  <div class="inner_div"></div>
</div>

答案 1 :(得分:1)

我想通了,谢谢大家的帮助!唯一需要做的更改是在内部div上使用inline-block而不是float和vertical-align:top:

.inner_div {
    display: inline-block;
    vertical-align: top;
    width: 200px;
}
相关问题