ホームページ  >  記事  >  ウェブフロントエンド  >  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 のディレクティブ。

Issue

目標は、CSS を使用して右からの要素の入り口をアニメーション化することです。ただし、最初に要素を非表示にするために ngIf を使用すると、遷移はトリガーされません。

解決策

重要な問題は ngIf の動作にあります。 ngIf に関連付けられた式が false になると、要素は DOM から削除されます。トランジションとアニメーションでは要素が DOM に存在する必要があるため、レンダリングされていない要素にトランジションとアニメーションを適用しても機能しません。

この問題に対処するには、ngIf の代わりに hidden を使用して、

更新されたソリューション (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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。