Pak*_*ako 7 transition navigation-drawer angular-material2 angular
我有一个sidenav和嵌套工具栏
toolbar.html
<md-sidenav-container fullscreen>
<md-sidenav #sidenav mode="side" color="primary">
<md-toolbar color="primary"><span>Sidenav</span></md-toolbar>
<button md-button class="sidenav-link" (click)="sidenav.close()">
<md-icon>home</md-icon><span class="title"> HOME</span>
</button>
<button md-button class="sidenav-link" (click)="sidenav.close()">
<md-icon>home</md-icon><span class="title"> HOME</span>
</button>
</md-sidenav>
<app-toolbar [sidenav]="sidenav"></app-toolbar>
</md-sidenav-container>
Run Code Online (Sandbox Code Playgroud)
sidenav.html
<md-toolbar color="primary">
<button md-button class="toolbar-menu-button"
(click)="sidenav.toggle(); isCollapsed = !isCollapsed">
<md-icon [@iconChange]="isCollapsed">menu</md-icon>
</button>
<span class="toolbar-spacer"></span>
<button md-button class="toolbar-link" >DASHBOARD</button>
<span class="toolbar-spacer"></span>
</md-toolbar>
Run Code Online (Sandbox Code Playgroud)
https://plnkr.co/edit/up19ZNJyMt6uatqdI9uv?p=preview
我想关闭sidenav到导航抽屉之类的主页图标
小智 7
这可以使用简单的css hack来实现.我们可以调用方法增加()和减少()的基础上像一些事件改变sidenav的宽度的mouseenter和鼠标离开或在您的案件的onClick "工具栏菜单按钮"
<md-sidenav #sidenav mode="side" class="example-sidenav" [ngStyle]="{ 'width.em': sidenavWidth }" opened="true" (mouseover)="increase()" (mouseleave)="decrease()">
Run Code Online (Sandbox Code Playgroud)
当我们指向sidenav并且当我们将鼠标指针指向某个其他位置时减小宽度时,这将会影响sidenav的宽度.
increase(){
this.sidenavWidth = 15;
}
decrease(){
this.sidenavWidth = 4;
}
Run Code Online (Sandbox Code Playgroud)
看看这个演示: - https://mini-sidenav.firebaseapp.com/
和github回购: - https://github.com/Ravi-Rajpurohit/mini-md-sidenav
我希望这有帮助 :-)
这个问题并不罕见。由于工具栏上的按钮控制打开和关闭状态,因此我必须添加一个来传递单击按钮时EventListener的状态。sidenav
基于该event标志,我添加了一些ngStyle可以保持sidenav. 请注意,sidenav现在始终打开[添加属性opened="true"],因为它始终可见。我还最终使用工具栏上发出的标志来用于“Sidenav”标题。如果需要显示部分“Sid”,可以将其删除。
另外,由于 sidenav 始终打开,我添加了自定义 css 来动画宽度的变化。
工具栏.组件.ts:
export class ToolbarComponent implements OnInit {
shortnav = true;
@Input() sidenav;
@Output()
change: EventEmitter<booelan> = new EventEmitter<boolean>();
constructor() {
console.log(this.sidenav);
}
ngOnInit() {
}
toggle(){
this.shortnav = !this.shortnav;
console.log("shortnav: " + this.shortnav)
this.change.emit(this.shortnav);
}
}
Run Code Online (Sandbox Code Playgroud)
工具栏.component.html:
<button md-button class="toolbar-menu-button"
(click)="toggle(); isCollapsed = !isCollapsed">
Run Code Online (Sandbox Code Playgroud)
sidenav.component.ts:
export class SidenavOverviewExample {
showSidenavTitle = false;
sidenavWidth = 2.75;
changeWidth(showShortNav){
if(showShortNav){
this.sidenavWidth = 2.5;
this.showSidenavTitle = false;
}
else{
this.sidenavWidth = 13;
this.showSidenavTitle = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
sidenav.component.html:
<md-sidenav-container fullscreen>
<md-sidenav #sidenav mode="side"
color="primary"
opened="true"
[ngStyle]="{ 'width.em': sidenavWidth }"
class="animate-sidenav">
<md-toolbar color="primary">
<span *ngIf="showSidenavTitle">Sidenav</span>
</md-toolbar>
<button md-button class="sidenav-link" (click)="sidenav.close()">
<md-icon>home</md-icon><span class="title"> HOME</span>
</button>
<button md-button class="sidenav-link" (click)="sidenav.close()">
<md-icon>home</md-icon><span class="title"> HOME</span>
</button>
</md-sidenav>
<app-toolbar [sidenav]="sidenav" (change)="changeWidth($event)"></app-toolbar>
</md-sidenav-container>
Run Code Online (Sandbox Code Playgroud)
sidenav.component.css:
.mat-sidenav-transition .mat-sidenav{
/* custom animation to grow and shrink width */
-webkit-transition: width .3s !important; /* For Safari 3.1 to 6.0 */
transition: width .3s !important;
}
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助:)
| 归档时间: |
|
| 查看次数: |
12328 次 |
| 最近记录: |