用angular animation做循环动画

笔者最近在生产中,遇到了需要开发自动运行并循环播放的动画的需求。虽然用纯CSS也能实现该效果,但还是想使用angular的animation来实现。

以下提供一些基本的思路和代码:

  • 1.首先,做动画首先需要一个html元素:
<img src="/assets/your_pic.png" [@anm]="state" (@anm.done)="Done($event)" class="animatedElement"/>
  • 2.其次,定义该元素的静态样式,保证在动画结束之后,或者设定动画延迟时能有效展示:
img.animatedElement {
        display: block;
        width: 15vh;
        position: relative;
        left: -25vw;
        top: 0;
}
  • 3.在组件中定义anm动画:
const anm = trigger('anm', [
  state('void', style({ left: '-25vw' })),
  state('start', style({ left: '-25vw' })),
  state('end', style({ left: '100%' })),
  transition('start => end', [
    animate(14500)
  ])
]);
  • 4.定义anm动画的结束回调,这里是关键,通过对toState属性的处理,实现了循环
/**
  * @desc 结束回调循环
  * @param ev
  */
  Done(ev) {
    switch (ev.toState) {
      case 'start':
        this.state = 'end';
        break;
      case 'end':
        this.state = 'start';
        break;
      default:
        break;
    }
  }
  • 5.完成!看效果吧

结语:

笔者感觉还是比较好实现的,而且相对于原生动画,更能把握各个状态之间的转换。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,118评论 25 709
  • 如果想让事情变得顺利,只有靠自己--夏尔·纪尧姆 上一章介绍了隐式动画的概念。隐式动画是在iOS平台创建动态用户界...
    夜空下最亮的亮点阅读 2,002评论 0 1
  • 轻轻捻开最后一页 并不是结束而是新的开始 不能释卷对你的阅读 最伤的痛在折磨 就是不能放弃 那毫无结果的等 我愿意...
    营州布衣阅读 149评论 2 10
  • 本文参加#感悟三下乡,青春筑梦行#活动,本人承诺,文章内容为原创,且未在其他平台发表过。梦想也许微小,但绝不...
    青春与责任同行阅读 289评论 0 1
  • 维娅族战败了。 无尽的凄凉,绝望的硝烟弥漫在花悸岛上空,罪恶的血腥杀戮仿佛刚刚结束一般,死寂带来的亡神气息...
    稚初酱阅读 440评论 1 1