粘滞的工具栏材料2和sidenav
发布时间:2020-12-17 17:23:18 所属栏目:安全 来源:网络整理
导读:最近开始学习材料2并跑去发行.我的方法是在Youtube网站上进行sidenav.左边有一个汉堡包菜单,可以扩展/折叠侧边菜单. 码: md-toolbar class="fixed-header" button class="app-icon-button" (click)="start.toggle()" i class="material-icons app-toolbar-m
最近开始学习材料2并跑去发行.我的方法是在Youtube网站上进行sidenav.左边有一个汉堡包菜单,可以扩展/折叠侧边菜单.
码: <md-toolbar class="fixed-header"> <button class="app-icon-button" (click)="start.toggle()"> <i class="material-icons app-toolbar-menu">menu</i> </button> </md-toolbar> <md-sidenav-container> <md-sidenav #start class="app-sidebar" mode="side">test</md-sidenav> <div class="text"> {{ text }} </div> </md-sidenav-container> 现在好像我实现了布局,但定位并不固定,如果我滚动工具栏移动和sidenav内容也移动. 编辑: 在角度材料文档中,我后来找到了一个我一直在寻找的示例: https://stackblitz.com/angular/rmjxrpxdgmx?file=app%2Fsidenav-responsive-example.html 如果链接将被删除,这里是代码: HTML文件: <div class="example-container" [class.example-is-mobile]="mobileQuery.matches" *ngIf="shouldRun"> <mat-toolbar color="primary" class="example-toolbar"> <button mat-icon-button (click)="snav.toggle()"><mat-icon>menu</mat-icon></button> <h1 class="example-app-name">Responsive App</h1> </mat-toolbar> <mat-sidenav-container class="example-sidenav-container" [style.marginTop.px]="mobileQuery.matches ? 56 : 0"> <mat-sidenav #snav [mode]="mobileQuery.matches ? 'over' : 'side'" [fixedInViewport]="mobileQuery.matches" fixedTopGap="56"> <mat-nav-list> <a mat-list-item routerLink="." *ngFor="let nav of fillerNav">{{nav}}</a> </mat-nav-list> </mat-sidenav> <mat-sidenav-content> <p *ngFor="let content of fillerContent">{{content}}</p> </mat-sidenav-content> </mat-sidenav-container> </div> TS档案: import {MediaMatcher} from '@angular/cdk/layout'; import {ChangeDetectorRef,Component,OnDestroy} from '@angular/core'; /** @title Responsive sidenav */ @Component({ selector: 'sidenav-responsive-example',templateUrl: 'sidenav-responsive-example.html',styleUrls: ['sidenav-responsive-example.css'],}) export class SidenavResponsiveExample implements OnDestroy { mobileQuery: MediaQueryList; fillerNav = Array.from({length: 50},(_,i) => `Nav Item ${i + 1}`); fillerContent = Array.from({length: 50},() => `Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum.`); private _mobileQueryListener: () => void; constructor(changeDetectorRef: ChangeDetectorRef,media: MediaMatcher) { this.mobileQuery = media.matchMedia('(max-width: 600px)'); this._mobileQueryListener = () => changeDetectorRef.detectChanges(); this.mobileQuery.addListener(this._mobileQueryListener); } ngOnDestroy(): void { this.mobileQuery.removeListener(this._mobileQueryListener); } } CSS文件: .example-container { display: flex; flex-direction: column; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .example-is-mobile .example-toolbar { position: fixed; /* Make sure the toolbar will stay on top of the content as it scrolls past. */ z-index: 2; } h1.example-app-name { margin-left: 8px; } .example-sidenav-container { /* When the sidenav is not fixed,stretch the sidenav container to fill the available space. This causes `<mat-sidenav-content>` to act as our scrolling element for desktop layouts. */ flex: 1; } .example-is-mobile .example-sidenav-container { /* When the sidenav is fixed,don't constrain the height of the sidenav container. This allows the `<body>` to be our scrolling element for mobile layouts. */ flex: 1 0 auto; } 解决方法
要将工具栏保持在顶部,请使用position:fixed和z-index:999.要将sidenav保持在可滚动区域之外,需要将其放在md-sidenav-container之外
感谢您创建了一个plnkr演示,它帮助我们快速找到了解决方案.这是修改后的demo. app.component.html: <md-toolbar class="fixed-header"> <button class="app-icon-button" (click)="start.toggle()"> <i class="material-icons app-toolbar-menu">menu</i> </button> </md-toolbar> <md-sidenav-container > <div class="text" style="min-height: 99vh"> {{ text }} </div> </md-sidenav-container> <md-sidenav #start class="app-sidebar side-nav-style" mode="side" > test </md-sidenav> app.component.css: .fixed-header { top: 0; position: fixed; z-index:999; } .text { width: 5px; } .side-nav-style{ background-color: grey; width: 6em; margin-top:62px; position: fixed } 如果您正在寻找,请告诉我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- AngularJS – 使用ng-include时丢失范围
- 如何“注册”我的库libfoo.so以将其与`-lfoo`链接?
- webservice框架jersey简单总结
- 角度 – 在* ngFor中使用具有可变参数的切片管道
- docker stats输出如何与最高输出相关?
- Angular 4.0.3:Uncaught TypeError:无法读取undefined的属
- BootStrap主题Simply Me的创建过程
- angular rc1:EXCEPTION:错误:未捕获(在承诺中):找不到默
- 看看redis中那些好玩的module (sql on redis, bf/cf on red
- unix – 是否可以重新连接telnet连接?