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 중국어 웹사이트의 기타 관련 기사를 참조하세요!