vue框架制作购物车小球动画效果实例代码


Posted in Javascript onSeptember 26, 2019

最近在学习前端制作了一个购物车小球的动画效果

直接上图看看效果

vue框架制作购物车小球动画效果实例代码

下面介绍一下制作这个动画的详细过程:

1.因为使用vue锁业需要使用transition标签包裹 并指定动画三个动画生命周期函数

<transition 
 		@before-enter="beforeEnter"
 		@enter="enter"
 		@after-enter="afterEnter">
 		<div class="ball" v-if="Ballflag" ref="ball"></div> //Ballflag默认指定为false不显示
 	</transition>

样式设置成一个红色的小球采用absolute定位确保不影响页面的其他元素

.ball{
		width: 15px;
		height: 15px;
		border-radius: 50%;
		background-color: red;
		position: absolute;
		top: 413px;
		left: 80px;
		z-index: 99;
}

然后设置按钮 Ballflag = !Ballflag 取非 触发动画效果(这里就不多说了)

如果起始位置和终点位置都使用px固定死的话对于不同的分辨率的设备效果都有所不同所以为避免这一情况我采用了动态计算出 起始位置和终点位置下面是具体的动画的代码

.ball{
		width: 15px;
		height: 15px;
		border-radius: 50%;
		background-color: red;
		position: absolute;
		top: 413px;
		left: 80px;
		z-index: 99;
}

通过动态的计算出起点位置和终点的位置来实现动画效果(优势可以适配不同分辨率的设备)看到现在似乎整个动画效果已经完成了。

不过我在测试使用的时候发现一个问题

当我点击按钮触发动画的时候往下拉滚动条发现动画终点的位置并不是期望的那样到达购物车的位置原因是我在给小球设置样式的时候给display设置的absolute绝对定位 只会计算出一个页面中的绝对的位置,无法跟着滚动条来动。后来又想到可以使用fixed布局相对这屏幕来运动不受页面滚动的影响所以实现的代码如下样式

.ball{
		width: 15px;
		height: 15px;
		border-radius: 50%;
		background-color: red;
		position: fixed;
		z-index: 99;
		top: 413px;
		left: 80px;

	}

****注意这里的boxPosition是页面中数量1的位置 即定位小球的位置

beforeEnter(el){
			
			var boxPosition = this.$refs.boxPosition.getBoundingClientRect();
			// console.log(boxPosition)
			// 获取目标的起始位置 
			var dist = boxPosition.y -413;
			el.style.transform = "translate(0,"+dist+"px)";
		},
		enter(el,done){
			el.offsetWidth;
			
			var boxPosition = this.$refs.boxPosition.getBoundingClientRect();
			var badgePosition = document.getElementById("badge").getBoundingClientRect();

			//目标的起始位置
			var dist = boxPosition.y -413; 
			
			// 这里因为是使用boxPosition的位置不是小球的位置所以-10调整一下误差
			var xDist = badgePosition.left - boxPosition.left -10; 

			//这里要加上起始的定位
			var yDist = badgePosition.top - boxPosition.top + dist;
			
			el.style.transform = "translate("+xDist+"px, "+yDist+"px)";
			el.style.transition = "all 1s ease";
			done();
		},
		afterEnter(el){
			this.Ballflag = !this.Ballflag;
		},

这里就已经完成了小球的动画效果了

这样的动画不会因为页面的滚动而无法准确的定位而且还能适配不同分辨率的设备。

总结

以上所述是小编给大家介绍的vue框架制作购物车小球动画效果实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
简单的ajax连接库分享(不用jquery的ajax)
Jan 19 Javascript
jquery ui bootstrap 实现自定义风格
Nov 14 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
canvas实现粒子时钟效果
Feb 06 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
Vue2.0 $set()的正确使用详解
Jul 28 Javascript
IDEA安装vue插件图文详解
Sep 26 #Javascript
layui use 定义js外部引用函数的方法
Sep 26 #Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 #Javascript
对Layer UI 模块化的用法详解
Sep 26 #Javascript
vue源码中的检测方法的实现
Sep 26 #Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 #Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 #Javascript
You might like
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
浅谈Vue.js
2017/03/02 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python实现解数独程序代码
2017/04/12 Python
Python识别html主要文本框过程解析
2020/02/18 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
司机检讨书
2014/02/13 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android