要实现一个自适应行高和行数的 div
容器,可以使用 CSS Grid 或 Flexbox 布局。以下是两种方法的实现方式:
CSS Grid 提供了强大的网格布局功能,可以轻松实现自适应行高和行数。
<div class="grid-container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
</div>
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); /* 自适应列宽 */
grid-auto-rows: minmax(100px, auto); /* 自适应行高 */
gap: 10px; /* 设置间距 */
}
.item {
background-color: #f4f4f4;
border: 1px solid #ccc;
padding: 10px;
}
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr))
:自动填充列,每列的最小宽度为 150px
,最大宽度为 1fr
(即剩余空间)。grid-auto-rows: minmax(100px, auto)
:每行的最小高度为 100px
,最大高度根据内容自适应。gap: 10px
:设置网格项之间的间距。Flexbox 也可以实现类似的效果,但需要一些额外的处理来确保自适应行高和行数。
<div class="flex-container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
</div>
.flex-container {
display: flex;
flex-wrap: wrap; /* 允许换行 */
gap: 10px; /* 设置间距 */
}
.item {
flex: 1 1 150px; /* 自适应宽度,最小宽度为150px */
background-color: #f4f4f4;
border: 1px solid #ccc;
padding: 10px;
min-height: 100px; /* 最小高度 */
}
flex-wrap: wrap
:允许子项换行。flex: 1 1 150px
:子项的自适应宽度,最小宽度为 150px
。min-height: 100px
:设置子项的最小高度。为了在不同屏幕尺寸下更好地控制布局,可以结合媒体查询来调整列数和行高。
@media (max-width: 600px) {
.grid-container {
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
.item {
min-height: 80px;
}
}
根据你的具体需求选择合适的布局方式。