[英]Angular Material Sidenav Not covering full screen on Scroll
[英]Angular 2 Material - Router animations broke sidenav content and scroll
我正在尝试在我的Angular 2 Material(angular / material2)应用程序中添加一些路由器动画。 没有动画,一切正常,但当我将它们添加到我的组件时,内容溢出视口,滚动行为不再起作用。
要添加动画,我已经定义了一个ts文件router.animations.ts :
import { AnimationEntryMetadata, trigger, state, animate, style, transition } from "@angular/core";
export function slideToLeft(): AnimationEntryMetadata {
"use strict";
return trigger("slideToLeft", [
state("void", style({ position: "fixed", width: "100%" })),
state("*", style({ position: "fixed", width: "100%" })),
transition(":enter", [
style({ transform: "translateX(100%)" }),
animate("0.5s ease-in-out", style({ transform: "translateX(0%)" }))
]),
transition(":leave", [
style({ transform: "translateX(0%)" }),
animate("0.5s ease-in-out", style({ transform: "translateX(-100%)" }))
])
]);
}
然后在我的组件内:
import { Component } from "@angular/core";
import { slideToLeft } from "./router.animations";
@Component({
selector: "home",
templateUrl: "src/home.component.html",
animations: [slideToLeft()],
host: { "[@slideToLeft]": "" }
})
export class HomeComponent {
constructor() {
}
}
这是一个显示问题的plunker:
https://plnkr.co/edit/Vz1iqSmcWwu3QG65Qxgw?p=preview
何我能解决这个问题吗?
滚动被禁用,因为该组件由于动画而设置为“position:fixed”。 将第二个状态更改为“position:relative”并重置离开转换中的位置将解决此问题:
export function slideToLeft(): AnimationEntryMetadata {
"use strict";
return trigger("slideToLeft", [
state("void", style({ position: "fixed", width: "100%" })),
state('*', style({position:'relative', width:'100%'}) ),
transition(":enter", [
style({ transform: "translateX(100%)" }),
animate("0.5s ease-in-out", style({ transform: "translateX(0%)" }))
]),
transition(":leave", [
style({transform: 'translateX(0%)', position:'fixed', width:'100%'}),
animate("0.5s ease-in-out", style({ transform: "translateX(-100%)" }))
])
]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.