Bootstrap 嵌套网格系统实现指南:正确构建模块化双栏布局

本文详解如何在 bootstrap 中正确实现嵌套网格(如左侧 8 列模块区 + 右侧 4 列日程区),解决因缺失父级 `.row`、列宽总和超限或未重置行间距导致的卡片错位、高度不一致等问题。

在 Bootstrap 中构建嵌套网格系统时,核心原则是:每一组 .col-* 必须严格包裹在 .row 内,且同一 .row 下所有列的 col-* 数值之和应为 12(或其倍数,依赖响应式断点)。你原始代码中存在多个关键问题:

  • ❌ 缺失闭合标签(如 未闭合, 错位导致 DOM 结构混乱);
  • ❌ 在 .col-8 内部直接嵌套了未包裹在 .row 中的 .col-3 元素(Bootstrap 要求嵌套列必须位于新 .row 内);
  • ❌ 第二行卡片未添加垂直间距(如 mt-2),导致视觉上“挤在一起”,加剧高度不一致的错觉;
  • ❌ 列宽设计不合理:col-3 × 4 = 12 是合法的,但你实际写了 3 个 col-3 后又嵌套了一个新 row(无父 .row),造成渲染异常。

✅ 正确做法如下:

  1. 外层容器:使用 .container → .row 构建主栅格;
  2. 左右分栏:.col-8(模块区) + .col-4(日程区);
  3. 模块区内嵌网格:每个 .col-8 子区域需新增 .row,再分配 .col-4(3 列/行,占满 12);若需多行,每行独立 .row,并用 mt-2 等间距工具类分隔;
  4. 日程区内嵌网格:同理,.row + 两个 .col-6 实现等宽双卡。

以下是结构清晰、语义完整、可直接运行的修复版代码:

  
    
    
      

Modules

@@##@@
Module A

Description

@@##@@
Module B

Description

@@##@@
Module C

Description

@@##@@
Module D

Description

@@##@@
Module E

Description

@@##@@
Module F

Description

Schedule

@@##@@
Event A

Jun 12, 10:00 AM

@@##@@
Event B

Jun 13, 2:30 PM

? 关键优化说明

  • 使用 g-3(gap)替代手动 mt-2,保证列间统一间距;
  • 所有卡片添加 h-100 + d-flex flex-column,确保高度一致、内容垂直对齐;
  • 图片统一设置 style="height: ...; object-fit: cover;" 防止拉伸变形;
  • 每个 .row 内列宽总和严格为 12(如 col-4 × 3 或 col-12 × 2),避免 Bootstrap 自动换行或溢出;
  • 移除冗余、未闭合的 HTML 标签,保障 DOM 清晰可靠。

? 小贴士:Bootstrap 5+ 不再默认为 .row 设置负边距(需配合 g-* 类控制间隙),因此务必使用 g-* 替代旧式 mx-n* + px-n* 组合,提升可维护性。

通过以上结构化嵌套,即可精准复现目标布局,并具备良好的响应式扩展能力(如在小屏下自动堆叠为单列)。