css – MdS​​idenavLayout中的Sticky MdToolbar

前端之家收集整理的这篇文章主要介绍了css – MdS​​idenavLayout中的Sticky MdToolbar前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用< md-sidenav-layout>的Angular 2 Material应用程序.使用< md-toolbar>内.
<md-sidenav-layout>
  <md-sidenav #sidenav mode="side" class="app-sidenav" opened="true">
    sidenav content
  </md-sidenav>

  <md-toolbar color="primary" class="toolbar">
    toolbar content
  </md-toolbar>
</md-sidenav-layout>

它看起来像这样

我要做的是让工具栏粘在顶部,这样当你向下滚动时它就不会移动.这是为了使其与sidenav及其标题保持一致.但目前它不起作用.

我虽然增加了位置:固定; top:0可以做到这一点,但事实并非如此

/* Doesn't work */
.toolbar {
  position: fixed;
  top: 0;
}

从我从MDN: positionthis SO post读到的关于position:fixed的内容,如果父级使用转换,它似乎不起作用.而且我非常确定md-sidenav-layout在sidenav切换时用于转换的内容.我测试了这个位置:固定; top:0在一个简单的静态页面上,它工作正常.

我可以尝试将工具栏从md-sidenav-layout的上下文中取出,但是当你切换sidenav时,它会处理动画和过渡以使工具栏和sidenav保持一致.

我的css-fu并不强大.也许我错过了什么.有没有关于如何解决这个问题的任何机构?只要我获得了预期的效果,欢迎任何解决方法.

这是Plunker.

解决方法

您应该将内容滚动到…内容上.
这不仅仅是一种解决方法,我实际上每次都需要这种布局时自己做,因为滚动条在你要滚动到的东西里面更自然.如果侧边栏内容太大,例如,它也需要有自己的滚动上下文.

不知道为什么材料团队以这种方式实现它,但是当使用sidenav布局时,可能有一个固定的工具栏将是最终版本中的默认行为(或者至少我希望它有一个选项).

无论如何,我已经更新了你的plunker以显示我的意思:
http://plnkr.co/edit/YViydOX9msbd8GJCGcm7?p=preview

你基本上禁用了sidenav内容的滚动:

/*
 * The /deep/ selector is simply to overcome view encapsulation
 * and be able to select the div.md-sidenav-content generated at runtime
*/
md-sidenav-layout /deep/ .md-sidenav-content {
  overflow: hidden;
}

然后你只需使.app-content填充正确的高度并将其溢出设置为auto:

.app-content {
  padding: 20px;
  height: calc(100% - 64px);
  overflow: auto;
}

猜你在找的CSS相关文章