html - 包装在单个容器中的不同行中具有相同高度的动态列

标签 html css

请检查下面的代码和问题

.container_12 {
  overflow: hidden;
}
.grid_4 {
  margin: 0;
  padding: 0;
  border: 0;
  float: left;
}
.container_12 .grid_4 {
  width: 33.333333333333336%;
}
<div class="container_12">
  <div class="grid_4">Div 1</div>
  <div class="grid_4">Div 2 with extra content</div>
  <div class="grid_4">Div 3 with extra content</div>
  <div class="grid_4">Div 4</div>
  <div class="grid_4">Div 5 with extra content</div>
</div>

在上面的代码中,grid_4连续对齐了3个,剩下的会换行到下一行。这些grid_4是动态生成的,甚至可以删除。例如,如果我删除 Div 4 并将 Div 5 移动到 Div 4 的位置,如下面的代码

<div class="container_12">
          <div class="grid_4">Div 1</div>
          <div class="grid_4">Div 2 with extra content</div>
          <div class="grid_4">Div 3 with extra content</div>          
          <div class="grid_4">Div 5 with extra content</div>
        </div>

这些 div 具有不同的内容和不同的高度。所以问题是我如何保持行高和每行 12/4 = 3 列?这可以通过 jquery 通过为元素设置高度来实现。但是有没有其他可能的方法通过仅使用 CSS [没有 flexbox - 因为移动兼容性] 来实现这一点

提前致谢。

最佳答案

CSS3 Flexbox 正是为此引入的。它可以在不使用任何框架的情况下通过简化代码和提高可读性来处理响应式和复杂的布局。它还适用于所有最新的浏览器,包括 IE11,部分支持 IE9、IE10。 here is the CanIUse link

您可以通过以下代码轻松实现您的解决方案:

.container_12 {
  display: flex; //initialises flexbox
  flex-wrap: wrap; //tells it to wrap overflowing contents
}
.grid_4 { 
  flex: 0 0 33%;
}

就这么简单! Codepen here

更好的是,这涵盖了您的动态高度和宽度要求。您还可以通过 flex property (flex-growflex-shrinkflex-basis 的简写)了解更多关于“调整”div 尺寸的信息

关于html - 包装在单个容器中的不同行中具有相同高度的动态列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39526683/

相关文章:

html - 用户选择 :none causes input field to be inaccessible on Safari

javascript - 通过循环将 CSS 类应用于每个 <li> 元素

html - 当html没有空格时如何平均分配li元素?

html - CSS——如何检测屏幕宽高比并相应地应用样式?

html - 自动调整图像大小

html - 保持 block 元素水平

css - 如何垂直居中这个基于 css/javascript 的模式对话框?

html - 为什么这么小的填充值会导致这么大的空间?

javascript - 居中响应下拉导航栏元素

html - 如果我使用 "position:fixed;"我可以让位置在右边吗?