【发布时间】:2019-01-27 10:20:54
【问题描述】:
昨天我遇到了一个似乎与 mat-drawer 和 Angulars router-outlet 有关的 CSS 问题。我有一个带有两个孩子的整页 flexbox。顶部有一个mat-toolbar,底部有一个自定义组件app-sidenav。这很好用,并且 app-sidenav 填充了页面的其余部分,因为 flexbox 是有弹性的。在继续之前先看看这个简化的设置:
<div class="flex">
<mat-toolbar></mat-toolbar>
<app-sidenav></app-sidenav>
</div>
相关的css是
.flex { width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: stretch; }
mat-toolbar { flex: 0 0 auto; }
app-sidenav { flex: 1 1 0; }
在 app-sidenav 组件中,我现在有以下模板
<mat-drawer-container>
<mat-drawer></mat-drawer>
<mat-drawer-content>
<main><router-outlet></router-outlet></main>
</mat-drawer-content>
</mat-drawer-container>
而相关的样式是
mat-drawer-container, mat-drawer-content { display: block; height: 100%; }
main { height: 100%; overflow-y: auto; }
这可以正常工作并且高度合适,除非没有内容大于app-sidenav 高度。滚动条出现在外部 flexbox 组件上,而不是main-tag 上。我还在高处测试了!important 和100vh,但没有成功。那么我怎样才能让主标签上的overflow-y 工作呢?
我很确定有一个简单的技巧,但我无法知道。谢谢你的帮助。 干杯!
编辑:
我为此问题创建了stackblitz。当您导航到 ciao 组件时,您会看到滚动条出现在文档根目录而不是主标记中。
【问题讨论】:
标签: css angular flexbox angular-material angular-router