zoukankan      html  css  js  c++  java
  • 仿饿了么项目,右侧商品组件动画,以及和购物车组件的联动效果,小球掉落效果

    要实现这个组件的效果,以及和底部购物车联动的效果

    这个组件能获取父组件foods上每个商品的数据,而且点击增加可以增加,点击删除可以删除

    新建一个组件叫做cartcontrol,因为每一道菜都应该有这个组件,所以在goods父组件循环遍历goods出的food中把每一项food传递到子组件中去

     在这个组件中接收food,是一个对象

     写好这个组件的骨架,并且给他添加点击事件,并根据是商品的数量来决定是否显示

     

     编写这个业务组件的逻辑方法还是比较简单的,但是在这其中踩了两个坑

    一个是food.count外部传递进来的food中并没有这个字段,所以引用了全局vue中的接口set方法,给其新增一个count字段

    另一个是外部的food因为也引用了better-scroll,要使用点击事件要在better-scroll初始化构造函数时候设置click为true

     到这里最基本的业务逻辑已经over了,接下来给这个组件增加一些动画,让其不那么生硬

     暂时的动画方案是点击增加按钮的时候左侧减号按钮滚动至右边,因为要做这个效果所以得把左边组件给拆分开来

     外部做平移动画,内部做滚动动画,在外面给他套上一个transition层来添加过度动画,编写的less如下

     到这里就完成了动画的编写,去浏览器上测试一下效果

    之前我们通过vue.set方法给商品添加了count属性,因此改变的food数据传递到了外部组件,就可以在food组件中使用一个selectFoods方法获取这些被选中的数据

    在food组件中新增加一个计算属性,通过双重循环遍历出被选中food的数据:

     传递到购物车组件中替换掉之前模拟被选择的数据

     

    好啦,到这里这个组件就完成了,并且做到了和底部购物车的联动

     

      接下来再完善一下这个组件,给这个点击事件添加一个抛物线动画,点击以后让其能够抛送到购物车中

    这个动画比较复杂,因为每个小球的距离顶部的高度都不同,而且用户多次点击,就会有多次飞入的效果

    首先是点击添加商品按钮,要给他派发一个事件传递到父组件中去:

    在cartcontrol组件的添加方法,通过$emit派发到父组件中去

     goods父组件中接收:

     再获取到购物车的DOM元素:

    这样就可以在购物车组件中获取到cartcontrol子组件传递过去的数据了

     

     在shopcart中添加一个drop方法:

    给其定义一个球的数组存放做动画的球,还有一个已经掉落球的数组

     

    小球动画给他三个动画事件钩子

     

     完善drop方法:

    实现这三个动画钩子

     

    样式如下:

     

    在这里就完成了小球掉落的动画效果

     

    代码已上传至码云:

     https://gitee.com/delisteam/ele-app-cart

  • 相关阅读:
    在Salesforce中创建Approval Process
    用C#基于WCF创建TCP的Service供Client端调用
    用 C# 实现一个简单的 Rest Service 供外部调用
    在Salesforce中将 Decimal 数据转换成美元格式
    在Asp.Net MVC中PartialView与EditorFor和DisplayFor的区别
    在Salesforce中对某一个Object添加自定义的Button和Link
    【LeetCode】227. Basic Calculator II
    【LeetCode】226. Invert Binary Tree
    【LeetCode】225. Implement Stack using Queues
    【LeetCode】224. Basic Calculator
  • 原文地址:https://www.cnblogs.com/rmty/p/11469672.html
Copyright © 2011-2022 走看看