Angular2 动画 - 动画不透明度,但不是显示属性

标签 angular angular2-animation

我想用 Angular2 动画显示和隐藏我的模态组件。目前这是我的代码:

animations: [
    trigger('modalState', [
      state('true', style({
        display: 'block',
        opacity: '1'
      })),
      state('false',   style({
        display: 'none',
        opacity: '0'
      })),
      transition('* => *', animate('200ms ease'))
    ])
  ]

问题:目前显示 block 设置在 200 毫秒后。所以你看不到动画的不透明度。应在事件后直接设置显示。

如何做到这一点?

最佳答案

您可以将动画钩子(Hook)用于离散的 CSS 属性,例如 display。因此,您的动画将仅包含不透明度:

animations: [
  trigger('modalState', [
    state('true', style({
      opacity: '1'
    })),
    state('false', style({
      opacity: '0'
    })),
    transition('* => *', animate('200ms ease'))
  ])
]

然后在您的模板中,您可以使用动画开始/结束 Hook 来切换显示:

<div
  [@modalState]="isShown"
  (@modalState.start)="$event.element.style.display = 'block'"
  (@modalState.done)="$event.element.style.display = ($event.toState ? 'block' : 'none')">
  ...
</div>

假设 isShown 是 bool 值。

关于Angular2 动画 - 动画不透明度,但不是显示属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125541/

相关文章:

javascript - typescript 同步方法调用

javascript - Angular 5 组件在选择器中需要 `-` 吗?

javascript - 调用存储在 Typescript 变量中的方法

node.js - 使用 angular、node.js 和身份提供者的 SAML 身份验证

angular - 文本行连续闪烁/闪烁

css - Ionic 2 动画(使用 Angular2)=> 来自 variable.scss 的颜色, `Failed to execute ' animate' on 'Element' : Partial keyframes are not supported

angular - 在 Angular 2 中用 subview 替换父 View 路由器 View

html - Angular 2 - 动画过渡不起作用

html - Angular 2 - 动画显示/隐藏不适用于组件标签

Angular2 动画 '* => void' 过渡未使用 *ngFor 组件项激活