在md-sidenav-layout内部可以将md-toolbar固定在顶部吗?

use*_*707 8 angular-material2 angular

我真的在这里挣扎.我们正在使用md-sidenav-layout并且发现无法想出一种方法将md-toolbar修复到页面顶部:

|--------------------------------|
|   <------ md-toolbar ------->  |       <- fix this so content scrolls under
|--------------------------------|
|                               ^|
|           scrollable           |
|                               v|
----------------------------------
Run Code Online (Sandbox Code Playgroud)

因为md-sidenav-layout似乎可以解决自己的问题,所以添加

style: fixed
Run Code Online (Sandbox Code Playgroud)

到md工具栏不修复它 - 事实上似乎没有!

任何帮助赞赏.

Dee*_*ain 6

用这个:

<md-toolbar color="primary" layout="row" style="position: fixed;">
</md-toolbar>
<md-sidenav-container fullscreen>
</md-sidenav>
Run Code Online (Sandbox Code Playgroud)

css:

.mat-toolbar.mat-primary{
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 9;
}
Run Code Online (Sandbox Code Playgroud)


use*_*707 3

对于其他为此苦苦挣扎的人来说,之所以困难是因为 md-sidenav-layout 和 md-sidenav-content 都指定

transform: translate3d(0,0,0)
Run Code Online (Sandbox Code Playgroud)

其作用是重置子元素的坐标系。这是使用 Transform3d 时的一个已知“问题”或注意事项。我们提出的替代方案是将 md-toolbar 放置在 md-sidenav-layout 之外,如下所示:

<div style="position: fixed; width: 100%">
  <md-toolbar>...</md-toolbar>
</div>
<md-sidenav-layout style="top: 64px !important">...</md-sidenav-layout>
Run Code Online (Sandbox Code Playgroud)

执行上述操作即可获得具有全屏布局的固定 md-toolbar 所需的效果。

有关固定/翻译3d问题的更多信息,请参阅此SO:“transform3d”不适用于位置:固定子项

  • 我发誓 Angular-Material 是我使用过的最糟糕的“框架”。当您必须添加自定义样式定义才能拥有“基本”功能时,为什么人们要使用这样的怪物,这确实超出了我的范围。不妨先编写自己的 css。至少它会做你想做的事,而且你不需要咨询任何人,除了你自己的创造力。 (19认同)