博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
仿饿了么项目,右侧商品组件动画,以及和购物车组件的联动效果,小球掉落效果...
阅读量:4359 次
发布时间:2019-06-07

本文共 1168 字,大约阅读时间需要 3 分钟。

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

 

这个组件能获取父组件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

转载于:https://www.cnblogs.com/rmty/p/11469672.html

你可能感兴趣的文章
Android关于buildToolVersion与CompileSdkVersion的区别
查看>>
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
Linux下启动/关闭Oracle
查看>>
session和cookie的区别
查看>>
oracle 数据库、实例、服务名、SID
查看>>
web.xml文件的作用
查看>>
linux下oracle调试小知识
查看>>
alert弹出窗口,点击确认后关闭页面
查看>>
oracle问题之数据库恢复(三)
查看>>
单点登陆(SSO)
查看>>
HR,也确实“尽职尽责”
查看>>
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>