Angular 2 的 ngIf 和 CSS 过渡/动画
如何在 Angular 2 中使用 CSS 将 div 从右侧滑入?
Notes
.transition{ -webkit-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out; -moz-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out; -ms-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out ; -o-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out; transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out; margin-left: 1500px; width: 200px; opacity: 0; } .transition{ opacity: 100; margin-left: 0; }
如果仅使用 [ngClass] 来切换类,并且 利用 opacity,则该代码可以正常工作。但是不想让该元素从一开始就被渲染,所以先用 ngIf "隐藏"它,但此时过渡将不起作用。
更新 4.1.0
使用了过渡动画API,无需再利用 [hidden] 或者 [*ngIf hidden]。
更新 2.1.0
import { trigger, style, animate, transition } from '@angular/animations';
@Component({
selector: 'my-app',
animations: [
trigger(
'enterAnimation', [
transition(':enter', [
style({transform: 'translateX(100%)', opacity: 0}),
animate('500ms', style({transform: 'translateX(0)', opacity: 1}))
]),
transition(':leave', [
style({transform: 'translateX(0)', opacity: 1}),
animate('500ms', style({transform: 'translateX(100%)', opacity: 0}))
])
]
)
],
template: `
xxx
`
})
export class App {
show:boolean = false;
}
原始回答
当表达式变为 false 时,*ngIf 会从 DOM 中移除元素,一个不存在的元素是无法进行过渡的。
可以使用 hidden 属性代替:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3