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] を使用してクラスを切り替え、不透明度を利用するだけであれば正常に機能します。ただし、その要素を最初からレンダリングしたくないので、最初に 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 から要素を削除します。存在しない要素は遷移できません。
は、隠し属性で置き換えることができます:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3