html - Flexbox / 始终强制采用 2 列布局(输入只有 1 个对象数组)
问题描述
我有一组对象,我通过 Ajax 调用从服务器获取,我需要始终将一个数组显示为两列布局。列应该是平衡的。使用 flex-direction: column 只是无限地扩展页面。我想确保始终有两列。
body {
margin: 1em;
}
.container {
display: flex;
height: 90vh;
}
.item {
flex: 1;
background: lightblue;
}
<div class="container">
<div class="item">
<h1> Group 1 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
</div>
<div class="item">
<h1> Group 2 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
<h4> Object 5</h4>
</div>
</div>
<div class="item">
<h1> Group 3</h1>
<div class="details">
<h4> Object 1</h4>
</div>
</div>
<div class="item">
<h1> Group 4 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
<div class="item">
<h1> Group 5 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
</div>
</div>
解决方案
column-count
在这里似乎很合适,还请注意,如前所述,.container
仅包含一个的 html 结构,.item
我相信你关闭它太早了。
body {
margin: 1em;
}
.container {
column-count: 2;
}
.item {
padding: 0.5em;
margin: 0 0.5em 1em;
background: lightblue;
break-inside: avoid;
/* remove this to allow item to break to next column , demo below the first container */
}
h1 {margin:0 ;}
.item:nth-child(odd) {
background: #bee/* demo see us */
}
.container~.container .item {
break-inside: auto;
}
<div class="container">
<div class="item">
<h1> Group 1 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
<div class="item">
<h1> Group 2 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
<h4> Object 5</h4>
</div>
</div>
<div class="item">
<h1> Group 3</h1>
<div class="details">
<h4> Object 1</h4>
</div>
</div>
<div class="item">
<h1> Group 4 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
<div class="item">
<h1> Group 5 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
</div>
</div>
</div>
<hr>
<div class="container">
<div class="item">
<h1> Group 1 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
<div class="item">
<h1> Group 2 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
<h4> Object 5</h4>
</div>
</div>
<div class="item">
<h1> Group 3</h1>
<div class="details">
<h4> Object 1</h4>
</div>
</div>
<div class="item">
<h1> Group 4 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
</div>
</div>
<div class="item">
<h1> Group 5 </h1>
<div class="details">
<h4> Object 1</h4>
<h4> Object 2</h4>
<h4> Object 3</h4>
<h4> Object 4</h4>
</div>
</div>
</div>
推荐阅读
- javascript - ::after 修饰符添加的内容的 DOM 选择器
- php - symfony 3.4 基于用户输入的路由注释需求
- wpf - 如何移动到 .Net Core 3.1 中的 UI 线程?
- apache - Gerrit 反向代理额外的斜杠
- java - 获取两个位置之间的路径
- r - R:按组和值向量过滤的更好方法?
- html - 将 div 放置在相对位置的行中,但如果 2 个 div 占用相同的空间,则堆叠
- javascript - 将 9829143 等大整数转换为日期对象
- angular8 - 导入和使用 BrowserModule(间接)导致错误 Can't resolve all parameters for ApplicationModule
- javascript - Vue警告:已分配计算属性“projectName”但没有设置器