You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单一Grid或Flex实现卡片的多端响应式布局?

用Grid/Flex实现无冗余的响应式卡片布局

你完全不需要重复创建多套布局再隐藏,用Grid或Flex只需要一套HTML结构,配合media query调整布局规则就能实现三种视图的适配,下面是具体方案:

方案一:CSS Grid(适合规整网格布局)

Grid天生适合处理网格类布局,只需要通过媒体查询修改列数即可实现不同断点的布局。

HTML结构(仅需一套)

<div class="card-container">
  <div class="card">卡片内容1</div>
  <div class="card">卡片内容2</div>
  <div class="card">卡片内容3</div>
  <div class="card">卡片内容4</div>
  <!-- 按需添加更多卡片 -->
</div>

CSS代码

/* 基础样式:通用布局规则 */
.card-container {
  display: grid;
  gap: 1.5rem; /* 卡片之间的间距,可按需调整 */
  padding: 1rem;
}

.card {
  padding: 1.5rem;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* 移动端(<768px):单列布局 */
@media (max-width: 767px) {
  .card-container {
    grid-template-columns: 1fr;
  }
}

/* 平板(768px-1023px):2列布局 */
@media (min-width: 768px) and (max-width: 1023px) {
  .card-container {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* 桌面端(≥1024px):3列布局(可根据需求调整列数) */
@media (min-width: 1024px) {
  .card-container {
    grid-template-columns: repeat(3, 1fr);
    max-width: 1200px;
    margin: 0 auto; /* 容器居中 */
  }
  /* 如果需要某张卡片占2列,给对应卡片加这个类 */
  .card-wide {
    grid-column: span 2;
  }
}

方案二:Flexbox(适合流式弹性布局)

Flex适合更灵活的流式排列,通过调整卡片的弹性属性实现不同列数。

CSS代码(HTML结构和上面一致)

/* 基础样式:通用布局规则 */
.card-container {
  display: flex;
  flex-wrap: wrap; /* 卡片自动换行 */
  gap: 1.5rem;
  padding: 1rem;
}

.card {
  flex: 1 1 100%; /* 默认占满容器宽度,移动端单列 */
  padding: 1.5rem;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* 平板:2列布局 */
@media (min-width: 768px) and (max-width: 1023px) {
  .card {
    /* 计算宽度:50%减去一半的gap,避免卡片因间距换行 */
    flex: 1 1 calc(50% - 0.75rem);
  }
}

/* 桌面端:3列布局 */
@media (min-width: 1024px) {
  .card-container {
    max-width: 1200px;
    margin: 0 auto;
  }
  .card {
    /* 计算宽度:1/3减去三分之二的gap */
    flex: 1 1 calc(33.333% - 1rem);
  }
}

选型建议

  • 如果是规整的等宽网格布局,优先选Grid,代码更简洁直观。
  • 如果需要卡片宽度灵活调整(比如不等宽、自适应内容),选Flex更合适。

内容的提问来源于stack exchange,提问作者Pawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:30:49