首頁  >  文章  >  web前端  >  如何在 Angular 2 中對 ngIf 控制的元素進行動畫處理?

如何在 Angular 2 中對 ngIf 控制的元素進行動畫處理?

Linda Hamilton
Linda Hamilton原創
2024-10-26 21:44:29777瀏覽

How to Animate Elements Controlled by ngIf in Angular 2?

Angular 2 ngIf 和CSS 轉換/動畫

這個問題深入研究了在ngIf 操作的元素上執行CSS 轉換或動畫的挑戰Angular 2 中的指令。

問題

目標是使用 CSS 為元素從右側的入口設定動畫。然而,當最初使用 ngIf 隱藏元素時,轉換無法觸發。

關鍵問題在於 ngIf 的行為。當與 ngIf 關聯的表達式變為 false 時,該元素將從 DOM 中刪除。由於過渡和動畫要求元素存在於 DOM 中,因此將它們應用於未渲染的元素將無法發揮作用。

要解決此問題,建議使用hide 而不是ngIf 來隱藏

更新的解決方案(Angular 4.1.0 及更高版本)

在Angular 4.1.0 及更高版本中,首選方法是使用Angular 動畫。這是使用動畫的更新解決方案:

<code class="typescript">import { trigger, style, animate, transition } from '@angular/animations';

// ...

@Component({
  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 }))
        ])
      ]
    )
  ]
})

// ...

<div *ngIf="show" [@enterAnimation]></div></code>

此解決方案為名為「enterAnimation」的元件新增了一個觸發器,並定義了進入和離開狀態的轉換。過渡包括變換和不透明度的樣式,允許元素通過動畫從右側滑入。

請記住,此解決方案適用於 Angular 4.1.0 及更高版本。對於舊版本,使用隱藏仍然是建議的方法。

以上是如何在 Angular 2 中對 ngIf 控制的元素進行動畫處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn