使用CSS Flex可实现响应式卡片网格布局。通过flex-wrap换行和gap设置间距,结合flex属性使卡片自适应伸缩;若需固定列数,可用calc()计算宽度并配合媒体查询调整不同屏幕下的显示列数,从而实现多行多列均匀排列且响应式友好的布局效果。

在现代网页设计中,卡片式布局非常常见,尤其适用于展示产品、文章或用户信息。使用CSS Flex布局可以轻松实现多行多列的均匀分布效果,同时保持良好的响应式特性。下面介绍如何用Flex实现卡片网格的多行多列均匀排列。
基本HTML结构
每个卡片放在一个容器内,结构清晰简洁:
卡片1卡片2卡片3卡片4卡片5卡片6
使用Flex实现多行均匀分布
通过设置容器为flex并启用换行,可以让卡片自动换行形成多行布局:
.card-grid {
display: flex;
flex-wrap: wrap;
gap: 16px; /* 卡片间距 */
}
.card {
flex: 1 1 300px; /* 弹性增长、收缩,基础宽度约300px */
min-width: 250px; /* 最小宽度防止过小 */
border: 1px solid #ddd;
border-radius: 8px;
padding: 16px;
background-color: #f9f9f9;
text-align: center;
}
说明:
- flex-wrap: wrap 允许子元素换行。
- flex: 1 1 300px 表示每个卡片可伸缩,基础宽度为300px,在空间不足时自动缩小。
- gap 设置卡片之间的间距,比margin更方便。
控制每行固定列数(可选)
如果希望每行固定显示3列,可以通过设置卡片宽度来实现:
网页中拖动 DIV 是很常见的操作,今天就分享给大家一个 jQuery 多列网格拖动布局插件,和其它的插件不太一样的地方在于你处理拖放的元素支持不同大小,并且支持多列的网格布局,它们会自动的根据位置自己排序和调整。非常适合你开发具有创意的应用。这个插件可以帮助你将任何的 HTML 元素转换为网格组件
立即学习“前端免费学习笔记(深入)”;
.card-grid {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.card {
flex: none; /* 不伸缩 */
width: calc((100% - 32px) / 3); /* 3列,减去两格gap */
}
注意:
- 使用 calc() 计算宽度,考虑gap的影响。
- 每行3个卡片时,总gap为2 * 16px = 32px。
- 此方法适合固定列数场景,但响应式需配合媒体查询调整。
响应式适配不同屏幕
结合媒体查询,可在小屏幕上减少每行列数:
@media (max-width: 768px) {
.card {
width: calc((100% - 16px) / 2); /* 平板:每行2列 */
}
}
@media (max-width: 480px) {
.card {
width: 100%; /* 手机:每行1列 */
}
}
优势:
- 在不同设备上都能保持良好布局。
- 配合flex和width控制,灵活且兼容性好。
基本上就这些。用Flex做卡片网格,既能均匀分布,又易于响应式调整,是目前最实用的方案之一。









