首页  >  文章  >  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