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 相关文章推荐
jq选项卡鼠标延迟的插件实例
May 13 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
轻松理解Javascript变量的相关问题
Jan 20 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
Mar 29 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
JS触摸与手势事件详解
May 09 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
May 17 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP多进程简单实例小结
2019/11/09 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python中非常实用的一些功能和函数分享
2015/02/14 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python实现银行账户系统
2021/02/22 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
军训感想500字
2014/02/20 职场文书
生日主持词
2014/03/20 职场文书
民生工作实施方案
2014/05/31 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
医院标语大全
2014/06/23 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
个人总结与自我评价
2015/02/14 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js