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

如何用CSS Grid或Flexbox实现指定响应式布局?

可行:用CSS Grid实现目标响应式布局

完全可以通过CSS Grid实现你的需求,无需嵌套额外div,以下是具体实现方案:

HTML结构

保持原始的div序列即可,不需要额外嵌套:

<div class="grid-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
</div>

CSS样式

采用移动端优先的思路,默认小屏为单列布局,大屏通过媒体查询切换为4列并实现迷你网格:

/* 小屏默认样式:单列顺序排列 */
.grid-container {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  padding: 1rem;
}

.grid-container div {
  padding: 1.5rem;
  background: #f0f0f0;
  border: 1px solid #ddd;
  border-radius: 4px;
}

/* 大屏布局(宽度≥768px时生效) */
@media (min-width: 768px) {
  .grid-container {
    grid-template-columns: repeat(4, 1fr);
    /* 定义网格区域,清晰划分布局结构 */
    grid-template-areas:
      "item1 item2 item3 ."
      ". . item4 item5"
      ". . item6 item7";
  }

  /* 给对应div分配网格区域 */
  .grid-container div:nth-child(1) { grid-area: item1; }
  .grid-container div:nth-child(2) { grid-area: item2; }
  .grid-container div:nth-child(3) { grid-area: item3; }
  .grid-container div:nth-child(4) { grid-area: item4; }
  .grid-container div:nth-child(5) { grid-area: item5; }
  .grid-container div:nth-child(6) { grid-area: item6; }
  .grid-container div:nth-child(7) { grid-area: item7; }

  /* 隐藏第8个及以后的div */
  .grid-container div:nth-child(n+8) {
    display: none;
  }
}

实现说明

  • 小屏模式:所有div按原始顺序单列排列,全部内容可见。
  • 大屏模式:
    1. 整体为4列网格布局。
    2. 通过grid-template-areas定义区域,让第4-7个div形成2×2的迷你网格(占据网格右下区域),前3个div排列在第一行前3列。
    3. 用:nth-child(n+8)选择器精准隐藏第8个及后续的所有div。

如果需要调整迷你网格的位置,只需修改grid-template-areas中的区域分布即可,灵活性很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:13:27