> 文章列表 > uniapp旋转动画 uniapp 实现点击图标旋转90度

uniapp旋转动画 uniapp 实现点击图标旋转90度

uniapp旋转动画 uniapp 实现点击图标旋转90度

本文章实现的效果是:点击按钮,图标顺时针旋转90度,再点击时,逆时针旋转回去,效果图如下:
在这里插入图片描述
在 uniapp 中,有两种动画实现方式:

  • 直接使用 CSS 动画
  • 通过 uniapp 提供编程式创建动画 uniapp 提供createAnimation内置函数,用于创建一个动画实例animation(本文章使用的方式)

html内容

<view :animation="animationData" @click="openAdd()"><u-icon  color="#ccc" size="16"   ></u-icon>
</view>
  • u-icon 是uniapp 提供的显示图标的组件
  • 这里的核心就是 view 的 animation 属性

JS 动画实现

<script>
export default {data() {return {animationData: {},isRote: false,animation: null,},onLoad() {},methods: {startAnimation() {//旋转角度 let rota = 90;//判断是否展开if(this.isRote){rota = 0;//标记未展开this.isRote = false;//隐藏需要隐藏的内容this.showAddPople = false;}else{this.isRote = true;//显示隐藏的内容this.showAddPople = true;}//创建动画this.animation = uni.createAnimation();//设置旋转角度 this.animation.rotate(rota).step()//导出动画this.animationData = this.animation.export()},
}
</script>

平移

this.animation.translate(Math.random() * 100 - 50, Math.random() * 100 - 50).step()
this.animationData = this.animation.export()

缩放

this.animation.scale(Math.random() * 2).step()
this.animationData = this.animation.export()

旋转与缩放同时执行

this.animation.rotate(Math.random() * 720 - 360).scale(Math.random() * 2).step()this.animationData = this.animation.export()

先旋转后缩放

this.animation.rotate(Math.random() * 720 - 360).step().scale(Math.random() * 2).step()
this.animationData = this.animation.export()