一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎样用 CSS Grid 精准实现六宫格不规则布局(含跨行跨列详解)

时间:2026-06-30 11:02:54 编辑:袖梨 来源:一聚教程网

本文手把手教你使用 CSS Grid 实现如图所示的非对称六宫格布局,通过合理定义网格轨道与精准控制每个区块的 grid-row/grid-column 跨度,替代低效的“均分列”思路,达成专业级响应式结构。

本文手把手教你使用 css grid 实现如图所示的非对称六宫格布局,通过合理定义网格轨道与精准控制每个区块的 `grid-row`/`grid-column` 跨度,替代低效的“均分列”思路,达成专业级响应式结构。

在构建现代网页布局时,CSS Grid 是处理复杂、非对称结构的首选方案——尤其适用于如本例中需要灵活跨行跨列的六宫格设计(参考原始需求中的示意图)。初学者常误用等宽列(如 33% 33% 33%)强行拼凑,结果导致布局僵硬、难以适配内容高度差异。正确做法是:先规划网格骨架,再为每个子项显式指定占据范围

✅ 正确的 Grid 布局策略

我们按目标视觉结构反推网格轨道:

  • 列轨道:40% 23% 4% 23% → 共4列,预留中间窄缝(4%)作为视觉分隔,左右主区域比例协调;
  • 行轨道:300px 50px 200px → 3行,分别承载高主区、窄过渡带与底部区块;
  • 每个 .hero-box 通过 grid-row 和 grid-column 属性精确锚定起止线(支持跨多行/多列)。

以下是完整、可直接运行的代码示例(Vue 单文件组件风格,但 CSS 部分完全通用):

<template>  <div class="container">    <div class="row">      <div class="col text-center">        <h3>Best Of The Best</h3>        <p>Sebuah lembaga pendidikan yang didedikasikan untuk memaksimalkan potensi anak bangsa.</p>      </div>    </div>    <div class="hero-box-container">      <div class="hero-box hero-box-1">1</div>      <div class="hero-box hero-box-2">2</div>      <div class="hero-box hero-box-3">3</div>      <div class="hero-box hero-box-4">4</div>      <div class="hero-box hero-box-5">5</div>      <div class="hero-box hero-box-6">6</div>    </div>  </div></template><style scoped>.hero-box-container {  display: grid;  grid-template-columns: 40% 23% 4% 23%;  grid-template-rows: 300px 50px 200px;  gap: 8px; /* 推荐添加间隙提升可读性 */}.hero-box {  border-radius: 8px;  color: white;  font-weight: bold;  display: flex;  align-items: center;  justify-content: center;}.hero-box-1 { background-color: #70e9c9; grid-row: 1 / 3; }     /* 跨第1–2行(共2行) */.hero-box-2 { background-color: #63dbbb; grid-column: 2 / 4; }   /* 跨第2–3列(即中间两列) */.hero-box-3 { background-color: #51c9a9; }                      /* 默认占1×1单元格 */.hero-box-4 { background-color: #3dafa0; grid-row: 3; }          /* 占第3行整行 */.hero-box-5 { background-color: #309d96; grid-row: 2 / 4; }      /* 跨第2–3行(覆盖窄带+底部) */.hero-box-6 { background-color: #1e897a; grid-row: 2 / 5; grid-column: 3 / 5; } /* 跨2–3行 + 第3–4列 */</style>

⚠️ 关键注意事项

  • grid-row: 1 / 3 含义:从第1条网格线开始,到第3条网格线结束 → 实际跨越 2 行轨道(行1和行2),而非“第1行到第3行”;
  • 百分比列宽慎用于响应式:生产环境建议改用 fr 单位(如 1fr 0.6fr 0.1fr 0.6fr)或 minmax() 配合 auto-fit 提升弹性;
  • 避免 scoped 样式干扰:若 .hero-box 需被外部样式覆盖(如主题切换),考虑移除 scoped 或使用 :deep();
  • 无障碍增强:为每个 .hero-box 添加语义化 role="region" 和 aria-label,例如 <div class="hero-box-1" aria-label="Utama: Prestasi Lembaga">1</div>。

掌握这种“轨道定义 + 显式定位”的思维模式,你将能自由构建新闻门户首页、数据看板、创意画廊等任意复杂网格结构。Grid 不是魔法,而是对空间的精准编程——从今天开始,告别 float 和 inline-block 的苦役时代。

立即学习“前端免费学习笔记(深入)”;

热门栏目