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

如何用Bootstrap 4实现左侧列固定、右侧列可滚动的布局?

实现左侧列固定、右侧列滚动的方案

针对你的Bootstrap+Angular布局需求,下面提供两种常用的实现方式,可根据实际场景选择:

方式一:左侧列滚动到顶部后固定(Sticky定位)

这种方式下,左侧列会跟随页面滚动,当到达视口顶部时固定住,右侧列正常滚动,适配大多数常规场景。

修改后的代码

<div class="container-fluid">
  <div class="row">
    <!-- 左侧固定列 -->
    <div class="col-md-3 sticky-sidebar">
      <app-articles></app-articles>
      <app-navigation></app-navigation>
    </div>

    <!-- 右侧滚动列 -->
    <div class="col-md-9">
      <div class="card" *ngFor="let post of posts; let i = index">
        <!-- 卡片内容 -->
      </div>
    </div>
  </div>
</div>

添加CSS样式

.sticky-sidebar {
  position: sticky;
  top: 0; /* 可根据页面顶部导航栏高度调整,比如导航栏高60px就设为top: 60px */
  align-self: flex-start; /* 解决flex布局下sticky定位失效问题 */
  min-height: 100vh; /* 可选:确保侧边栏至少占满视口高度,避免内容过短时不固定 */
}

方式二:左侧列始终固定在视口,右侧列单独滚动

这种方式下,左侧列一直固定在视口左侧,右侧列的内容区域独立滚动,页面整体无滚动条,适合特殊场景需求。

修改后的代码

<div class="container-fluid h-100">
  <div class="row h-100">
    <!-- 左侧固定列 -->
    <div class="col-md-3 fixed-sidebar">
      <app-articles></app-articles>
      <app-navigation></app-navigation>
    </div>

    <!-- 右侧滚动列 -->
    <div class="col-md-9 overflow-auto">
      <div class="card" *ngFor="let post of posts; let i = index">
        <!-- 卡片内容 -->
      </div>
    </div>
  </div>
</div>

添加CSS样式

/* 确保根容器占满视口高度 */
html, body {
  height: 100%;
  overflow: hidden;
}

.fixed-sidebar {
  position: fixed;
  height: 100vh;
  overflow-y: auto; /* 侧边栏内容过多时,自身可滚动 */
}

.overflow-auto {
  height: 100vh;
  padding-left: 15px; /* 抵消Bootstrap列的默认padding,避免内容被侧边栏遮挡 */
}

额外适配提示

如果需要在移动端取消固定效果,可借助Bootstrap的媒体查询:

@media (max-width: 767px) {
  .sticky-sidebar, .fixed-sidebar {
    position: static;
    height: auto;
  }
  .overflow-auto {
    height: auto;
    padding-left: 0;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:39:16