【问题标题】:Angular 2 button click animationAngular 2按钮点击动画
【发布时间】:2017-04-30 08:58:08
【问题描述】:

我想在每次按钮点击时制作一个先缩小再缩小效果的动画。以下是我尝试过的:

<button (click)="clickMe()" [ngClass]="{'animated-button': animated}">Button</button>

这是我的 CSS:

@keyframes buttonClickAnimation {
  0% {transform: scale(0.8);}
  100% {transform: scale(1);}
}
.animated-button {
  animation: buttonClickAnimation 0.5s;
}

这是我的组件:

...
animated: boolean = false;

clickMe() {
  this.animated = true;
}

这只适用于第一次点击,这是有道理的,因为我的animated 变量永远不会被设置回false。但是,如果我在clickMe() 中将其设置回false,则动画将没有时间执行。也许这甚至不是实现这一点的正确方法。请指教!谢谢。

【问题讨论】:

    标签: javascript css animation angular


    【解决方案1】:

    您可以通过附加! 来切换布尔值(真/假)

    animated: boolean = false;
    
    clickMe() {
      this.animated = !this.animated;
    }
    

    【讨论】:

      【解决方案2】:

      为将动画变量设置为 false 添加延迟。

      clickMe() {
        this.animated = true;
        delay(500).then(() => this.animated = false);
      }
      
      async function delay(ms: number) {
        return new Promise((resolve) => setTimeout(resolve, ms));
      }
      

      【讨论】:

      • 把它变成一个指令会很好,不是吗? (避免每次都必须重复处理一个原本相当无用的状态变量)
      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 2017-05-18
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多