无法将角度材料md-sidenav设为100%高度

时间:2016-05-19 22:07:27

标签: css angular angular-material

我正在使用带有sidenav的angular2-material制作一个新的angular2应用程序。我无法为我的生活获得100%的高度。我试图让菜单滑出,占据屏幕的整个高度。无论用户在哪里滚动,我都希望它以相同的方式打开。

这是我的模板:

    tr(ng-repeat='detail in launchesList | orderBy: "+launchDate" | filterPastDates |  filter:{launchName:launchName} | filter:{vendorName:vendorName} | angleFilter:anglesList)

这是我的CSS:

<md-sidenav-layout class="demo-sidenav-layout">
  <md-sidenav #start mode="over">

    <a [routerLink]="['/login']" class="btn btn-primary">Log in</a>
    <br>
  </md-sidenav>
    <md-toolbar color="primary">

      <button md-button (click)="start.toggle()">Open Side Drawer</button>
      <span>Spellbook</span>

      <span class="demo-fill-remaining">

      </span>

    </md-toolbar>
  <div class="demo-sidenav-content">

    <router-outlet></router-outlet>
  </div>
</md-sidenav-layout>

我的.demo-sidenav-layout { //border: 3px solid black; min-height:100%; md-sidenav { padding: 10px; background: gainsboro; min-height: 100%; } } .demo-sidenav-content { padding: 15px; min-height:100%; } .demo-toolbar { padding: 6px; .demo-toolbar-icon { padding: 0 14px 0 14px; } .demo-fill-remaining { flex: 1 1 auto; } } 设置为htmlheight:100%设置为body

6 个答案:

答案 0 :(得分:53)

使用全屏

<md-sidenav-layout fullscreen>

  <md-sidenav #start mode="over">
    <a [routerLink]="['/login']" class="btn btn-primary">Log in</a>
    <br>
  </md-sidenav>

  <md-toolbar color="primary">
    <button md-button (click)="start.toggle()">Open Side Drawer</button>
    <span>Spellbook</span>
    <span class="demo-fill-remaining"></span>
  </md-toolbar>

  <div class="demo-sidenav-content">
    <router-outlet></router-outlet>
  </div>

</md-sidenav-layout>

答案 1 :(得分:39)

根据对Issue : Angular Material 2 - not rendering in full screen的评论,将删除全屏属性...

请改为尝试:

mat-sidenav-container {
   position: fixed;
   height: 100%;
   min-height: 100%;
   width: 100%;
   min-width: 100%;
}

答案 2 :(得分:6)

在最新版本的material.angular中,您可以在mat-sidenav上使用属性fixedInViewport。

见下文。

<mat-sidenav #start mode="over" fixedInViewport="true"> ... </mat-sidenav>

答案 3 :(得分:3)

  .demo-sidenav-layout {
      position:fixed;
      //border: 3px solid black;
      min-height:100vh;
      md-sidenav {
        padding: 10px;
        background: gainsboro;
        min-height: 100%;
      }
    }

使高度100vh而不是100%....尽管你可以使宽度= 100%,但你不能一次只做100%的高度,因为通常你可以向下滚动到无穷大。 使用

position:absolute;

然后使用

height : 100%;

答案 4 :(得分:1)

我最终在sidenav本身上设置position:fixed,这正是我想要的。

.demo-sidenav-layout {
  position:fixed;
  //border: 3px solid black;
  min-height:100%;
  md-sidenav {
    padding: 10px;
    background: gainsboro;
    min-height: 100%;
  }
}

.demo-sidenav-content {
  padding: 15px;
  min-height:100%;
}

.demo-toolbar {
  padding: 6px;

  .demo-toolbar-icon {
    padding: 0 14px 0 14px;
  }

  .demo-fill-remaining {
    flex: 1 1 auto;
  }

}

答案 5 :(得分:0)

您还可以像这样将mad-sidenav-content的{​​{1}}设置为min-height

100vh

位置:

<mat-sidenav-content class="sidenav__content--height"> .... </mat-sidenav-content>