美文网首页
小程序购物车飞行动画

小程序购物车飞行动画

作者: 云鹤道人张业斌 | 来源:发表于2020-07-24 16:39 被阅读0次

目的: 看到京东app点击加入购物车按钮动画效果不错,在我们自己的小程序怎么实现呢? 商品图片中间出现一个预览图的缩小版运动到购物车,效果看下图


gif.gif

分析

  1. 一个定位在屏幕中上部的图片
  2. 运动到大概左下部即可
  3. 运动过程中缩小
  4. 运动后购物车抖一抖,数字增加(如果购物车已有,数字不增加)

实现

网上有用贝塞尔曲线的方式,计时器赋值的实现方式。我就不写了。实践过后比较卡顿,我不喜欢。大致代码长这样 传送门

html部分

  <view
  class='arrow'
  animation="{{animationY}}"
  style="top:{{ballY}}px;left:{{ballX}}px;"
  hidden="{{!showBall}}"
>
  <image src='{{url}}' animation="{{animationX}}" class="img" />
</view>

css部分

 .arrow {
  position: fixed;
  transform: translateX(-50%);
  z-index: 99;
  border-radius: 50%;
  padding: 5rpx;
}
.arrow .img {
  width: 120rpx;
  height: 120rpx;
  border-radius: 50%;
}

js部分

// function delay(wait) {
//  return new Promise(resolve => {
 //   setTimeout(() => {
//      resolve()
//    }, wait)
//  })
//}
import { delay } from '../../../common/utils/helper'

Component({
  properties: {
    url: String   //   不同的商品自然是传不同的图片
  },

  data: {
    animationY: {},
    animationX: {},
    ballY: 150,    //  在屏幕上的初始值
    ballX: 200,
    showBall: false,
  },

  lifetimes: {
    attached() {
//   购物车小篮子动画初始化
      this.animationCart = wx.createAnimation({
        duration: 40,
        timingFunction: 'ease'
      })
    }
  },

  methods: {
//  外部调用执行
    _start(fn) {
      this.setData({
        showBall: true
      })
      this.createAnimation(fn)
    },
    // 创建动画
    createAnimation(fn) {
      const { ballX, ballY } = this.data
    //   这里的windowWidth, windowHeight  是全局  wx.getSystemInfoSync()来的
    //  修改bottomX  bottomY  的值调整到自己想要的位置
      const bottomX = global.deviceWidth - 60
      const bottomY = global.deviceHeight - 300
      const animationX = this.flyX(bottomX, ballX) // 创建小球水平动画
      const animationY = this.flyY(bottomY, ballY) // 创建小球垂直动画

      delay(100)
        .then(() => {
          // 100ms延时,  确保小球已经显示
          this.setData({
            animationX: animationX.export(),
            animationY: animationY.export()
          })
          // 400ms延时, 即小球的抛物线时长

          return delay(400)
        })
        .then(() => {
      // 还原
          this.setData({
            animationX: this.flyX(0, 0, 0).export(),
            animationY: this.flyY(0, 0, 0).export(),
            showBall: false
          })
          // 购物车抖动动画
          this.animationCart
            .rotate(30)
            .step()
            .rotate(-5)
            .step()
            .rotate(5)
            .step()
            .rotate(-2)
            .step()
            .rotate(2)
            .step()
            .rotate(0)
            .step()
          fn && fn(this.animationCart)
        })
    },
    // 水平动画
    flyX(bottomX, ballX, duration) {
      const animation = wx.createAnimation({
        duration: duration || 400,
        timingFunction: 'linear'
      })
//  缩小后自然要还原
      const scale = duration === 0 ? 1 : 0.1
// translateX 控制运动方向
      animation
        .translateX(ballX - bottomX)
        .scale(scale)
        .step()

      return animation
    },
    // 垂直动画
    flyY(bottomY, ballY, duration) {
      const animation = wx.createAnimation({
        duration: duration || 400,
        timingFunction: 'ease-in'
      })

      animation.translateY(bottomY - ballY).step()

      return animation
    }
  }
})

页面调用

 this.selectComponent('#fly')._start(animationCart => {
            this.setData({
              animationCart: animationCart.export()
            })
          })

以上就是全部内容,直接复制代码去感受效果。
想要往上运动,往左边动 或者从点击处出发。只要更改初始位置,和 translateX translateY的方向就可以了 。就是这么简单

补:使用hidden有些问题,重复加入同一规格商品动画失效,使用wx: if
之前也遇到过测试用模拟器测试hidden无法隐藏的问题,所以不建议使用这个鸡肋

加入购物车功能将在下个版本上线到惠出发

硬核广告:更多小程序功能体验,请 搜索 “惠出发” 小程序,买最便宜的货,订最便宜的酒店。

5cfcf161b83259a93446139415135c7.jpg

看更多wepy实现和h5实现点击链接 传送门

相关文章

  • 小程序购物车飞行动画

    目的: 看到京东app点击加入购物车按钮动画效果不错,在我们自己的小程序怎么实现呢? 商品图片中间出现一个预览图...

  • 微信小程序之小球动画

    前言 加入购物车动画最终效果 准备 准备一张购物车图片,如下 实现 实现这个效果主要就是用小程序提供的动画相关的A...

  • 小程序加入购物车动画

    说明: 之前用vue css3写过抛物线动画,但是小程序中,不支持js操作dom元素,所以你无法用js去去除动画...

  • mpvue 使用css3动画实现添加购物车抛物线动画

    实现抛物线的方式有两种,一是css3动画,二是贝塞尔曲线 1.原生小程序使用css3动画实现添加购物车抛物线动画 ...

  • 只有 1 ‱ 的人会用 小程序 这个功能

    购物单是微信提供的小程序购物车和订单管理工具。小程序接入购物单后,购物车和订单商品将同步至【我的购物单】小程序的【...

  • 微信小程序购物车实现思路

    分享一下微信小程序购物车实现思路,购物车离不开checkbox,只是不同框架封装了不同的api,我们来看看小程序里...

  • 购物车动画与加减

    实现以下业务逻辑 购物车动画 购物车内加减 一、购物车动画 通过点击控制显示与隐藏,

    小程序购物车

    本来想做搬运工的, 网上找了一些案列, 找了三个小时都没有找到自己想要的, 或者有很多BUG, 一气之下就自...

  • 小程序购物车

    目前一个商城小程序项目正在进行中,然后有个购物车的功能值得注意下,因为暂时是在构建前端页面上,所以暂时是没有后台部...

  • 小程序 动画

    一、过渡、动画、转换间的总结 对应链接手动触发-->改变属性 + transition属性说明=css过渡cs...

网友评论

      本文标题:小程序购物车飞行动画

      本文链接:https://www.haomeiwen.com/subject/yzhbxktx.html