
在 bootstrap 4 布局中,通过为左栏添加 `position-fixed` 并配合合理的尺寸与定位控制,可轻松实现左栏静止、右栏独立滚动的响应式双栏效果。
要实现“左栏固定、右栏滚动”的经典侧边导航+主内容布局(常见于后台管理或文档页面),*不能依赖 overflow-hidden 或 overflow-auto 单独作用于栅格列(`.col-)**——因为 Bootstrap 的.col-*是弹性子元素,默认随父容器.row流动,且.row本身不产生定位上下文,导致overflow` 属性失效或行为异常。
✅ 正确解法:将左栏脱离文档流,设为固定定位(position: fixed),并手动控制其宽高与位置;右栏则通过 margin-left 预留空间,并启用垂直滚动。
以下是优化后的结构与关键 CSS(兼容 Bootstrap 4.6+):
@@##@@Dashboard
? 关键要点说明:
- ✅ 使用 position-fixed + top-0 start-0 h-100 确保左栏固定在视口左上角并占满高度;
- ✅ 手动设置 width: 256px(与 margin-left 一致),避免响应式错位;推荐用 CSS 变量或自定义类统一维护;
- ✅ 右侧内容包裹在
ain> 中,并通过 ms-md-xxl(Bootstrap 5+ 类名)或内联 margin-left: 256px 推开,确保不被固定栏遮挡; - ✅ 添加 d-none d-md-block 实现移动端隐藏左栏(提升移动体验),如需响应式展开,可结合 Bootstrap 折叠组件(collapse)增强交互;
- ⚠️ 注意:固定定位元素脱离文档流,不要放在 .container-fluid > .row 内部——否则会破坏栅格逻辑,这也是原代码中 overflow 失效的根本原因。
? 进阶建议:
若需支持深色模式、滚动时添加阴影或粘性头部,可配合 @media (prefers-color-scheme) 或 Intersection Observer 监听滚动状态,进一步提升专业度。
此方案轻量、语义清晰、完全兼容 Bootstrap 4 的工具类体系,无需额外 JS 即可稳定运行。










