Angular 2 の ngIf と CSS トランジション/アニメーション
Angular 2 で CSS を使用して右から div をスライドインするにはどうすればよいですか?
<code class="html"><div class="note" [ngClass]="{'transition':show}" *ngIf="show"> <p> Notes</p> </div> <button class="btn btn-default" (click)="toggle(show)">Toggle</button></code>
.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
<code class="typescript">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; }</code>
元の回答
式が false になると、*ngIf は DOM から要素を削除します。存在しない要素は遷移できません。
は、隠し属性
<code class="html"><div class="note" [ngClass]="{'transition':show}" [hidden]="!show"></code>
以上が考えられるタイトルをいくつか挙げます。 1. Angular 2 の `ngIf` で CSS トランジションを機能させるにはどうすればよいですか? 2. Angular 2 で「ngIf」が CSS トランジションを中断するのはなぜですか? 3. Angular 2: `ngIf` と CSS アニメーションを組み合わせてスムーズな転送を実現するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。