支付宝小程序商品加入购物车动画

在这里插入图片描述
思路:一个盒子做匀速运动,盒子里的小球做变速运动

js
Page({
  data: {
    tran: [ ],//传参//1小球纵向移动距离//0小球横向移动距离//2//购物车宽度
    clientY: 0,//点击位置y坐标
    cartX: 0,//购物车左边位置
    cartY: 0,//购物车图表上边位置
    list: [{ name: '商品1' }, { name: '商品2' }, { name: '商品3' }],
    width: 0,//购物车宽
    show: false,
    flag: false,
  },
  onLoad() {
  },
  onReady() {
   my.createSelectorQuery()//获取动态点坐标,作为动画初始值
      .select('#cart').boundingClientRect()
      .exec((ret) => {
        console.log(ret)//动态点位置信息
        this.setData({
          cartX: ret[0].left,
          cartY: ret[0].top,
          width: ret[0].width,
        })
      })
  },
  add(e) {
    if (this.data.flag) {
      return;
    }
    let that = this
    let tran = [e.detail.clientX, e.detail.clientY - this.data.cartY,this.data.width]//传参,运动参数横向距离,总想距离,购物车宽度
    let position=[e.detail.clientX - this.data.cartX,e.detail.clientY - this.data.cartY]//传参,小球运动起点位置
   console.log(tran,position)
    this.setData({//圆点就为
      tran,
      position,
      show: true,
      flag: true,
    }, () => {
      this.init.init()//使用子组件中自定义事件
    })

    //动画结束执行数据回归初始化
    setTimeout(function () {
      that.setData({
        show: false,
        flag: false
      })
    }, 1000)
  },
  flyCart(ref) {//获取组件实例
    console.log(ref)
    this.init = ref
  },
  cart(e) {
    console.log(e.detail)

  }
});
///html
<view class="one" a:for="{{list}}">
  <text>{{item.name}}</text>
  <view class="pot">
    <text style="font-size:28px;padding:5px 30px;" onTap="add" ref="flyCart" >+</text>
  </view>
</view>

<view class="btn">
 <my-component7 ref="flyCart"
  tranY="{{tranY}}" 
    show="{{show}}"
     tran="{{tran}}"
     position="{{position}}"
     />
  <text id="cart" onTap="cart">购物车</text>
</view>
///css
.one{
  display: flex;
  align-items: center;
  justify-content: space-between;
}
page{
  background: #fff;
}


.btn{
  position: fixed;
  background: #999;
  bottom:40px;
  left: 5px;

  
}

.box{
  width: 10px;
  height:10px;
  border-radius: 10px;
  /* border: 1px solid #999; */
    position: absolute;

}
.dian{
  width: 10px;
  height:10px;
  background: red;
  border-radius: 10px;
}

运动组件在附件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白菜1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值