我希望使用 css 以 Angular 2 从右侧滑入一个 div。
<div class="note" [ngClass]="{'transition':show}" *ngIf="show">
<p> Notes</p>
</div>
<button class="btn btn-default" (click)="toggle(show)">Toggle</button>
如果我只使用 [ngClass] 来切换类并利用不透明度,我可以正常工作。 但是 li 不希望从一开始就呈现该元素,所以我先用 ngIf “隐藏”它,但是过渡将不起作用。
.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;
}
最佳答案
更新 4.1.0
另见 https://github.com/angular/angular/blob/master/CHANGELOG.md#400-rc1-2017-02-24
更新 2.1.0
有关详细信息,请参阅 Animations at angular.io
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: `
<button (click)="show = !show">toggle show ({{show}})</button>
<div *ngIf="show" [@enterAnimation]>xxx</div>
`
})
export class App {
show:boolean = false;
}
原创
*ngIf
在表达式变为 false
时从 DOM 中删除元素。您不能对不存在的元素进行转换。
改用隐藏
:
<div class="note" [ngClass]="{'transition':show}" [hidden]="!show">
关于css - Angular 2 ngIf 和 CSS 过渡/动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417931/