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

如何让mat-drawer左侧菜单内容在页面滚动时保持固定?

解决mat-drawer菜单无法设置sticky的问题

问题出在mat-drawer默认样式上,它自带overflow:auto属性,导致内部的sticky元素只会相对于drawer的滚动视口固定,而非整个页面。按以下步骤修改即可:

1. 调整容器样式

给mat-sidenav-container设置全屏高度,确保页面滚动区域正确:

mat-sidenav-container {
  height: 100vh;
}

2. 修改mat-drawer的overflow属性

去掉drawer自身的滚动,让内容跟随页面整体滚动:

mat-sidenav {
  overflow: visible;
  width: 250px; /* 根据需求调整宽度 */
}

3. 给菜单添加sticky样式

给菜单容器设置sticky定位,并添加背景色防止内容穿透:

.sticky-menu {
  position: sticky;
  top: 0;
  background-color: #fff;
  padding: 16px; /* 可选,调整内边距 */
}

4. 更新HTML结构

将菜单内容包裹在带有sticky-menu类的容器中:

<mat-drawer mode="side" opened>
  <div class="sticky-menu">
    <!-- 你的菜单内容 -->
    <p>菜单选项1</p>
    <p>菜单选项2</p>
    <p>菜单选项3</p>
    <p>菜单选项4</p>
  </div>
</mat-drawer>

<mat-drawer-content>
  <!-- 页面滚动内容 -->
  <div style="height: 2000px; padding: 16px;">
    长内容区域...
  </div>
</mat-drawer-content>

完成以上修改后,页面滚动时左侧菜单会始终固定在屏幕顶部可见区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:52:38