如何使可切换的 mat-sidenav 推送也成为 mat-sidenav-content 中的固定标题

Posted

技术标签:

【中文标题】如何使可切换的 mat-sidenav 推送也成为 mat-sidenav-content 中的固定标题【英文标题】:How to make a toggleable mat-sidenav push also a fixed header in the mat-sidenav-content 【发布时间】:2020-09-19 01:27:05 【问题描述】:

我正在使用 mat-sidenav-container 创建我的页面的桌面版本,但我想让 mat-sidenav 可切换,我已经设法做到了。 现在的问题是我在 mat-sidenav-content 上有一个固定的标题,并且在显示 mat-sidenav 时该部分没有被推送。

对于 mat-sidenav-content 我使用 css 网格将此部分分为两部分(固定标题和主要内容)

这里是a stackblitz demo。

您知道如何使 mat-sidenav 也推送固定标题吗?

谢谢。

【问题讨论】:

【参考方案1】:

您必须从 .content__header 中删除这些样式:

height: 12rem;
position: fixed;
left: 0;

并添加position: sticky 到它。因为position: fixed,块不能被侧边栏推到一边,并且由于固定高度,当position: fixed被移除时它会溢出。特别不需要高度,因为您已经在 .content 类中指定了它:grid-template-rows: 12rem auto;。将其更改为position: sticky 会使标题仍然在滚动中,但也会被推到一边。重要的是top: 0 仍然存在。

.content__header 类现在应该如下所示:

.content__header 
  background-color: #eee;
  width: 100%;
  position: sticky;
  top: 0;
  padding: 0.5rem 1rem;
  z-index: 3;

【讨论】:

以上是关于如何使可切换的 mat-sidenav 推送也成为 mat-sidenav-content 中的固定标题的主要内容,如果未能解决你的问题,请参考以下文章

页面加载时如何不打开mat-sidenav

Angular Material:使用 mat-sidenav,无法读取未定义的属性“切换”

从任何组件动态更改 mat-sidenav 内容

在mat-sidenav组件的'closing'事件中更改状态时,角度动画不会触发?

mat-sidenav 在页面加载时打开。我该如何关闭它?

Angular 6,7 如何将默认主题颜色应用于 mat-sidenav 背景?