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 相关文章推荐
JS getMonth()日期函数的值域是0-11
Feb 15 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
让你的博客飘雪花超出屏幕依然看得见
Jan 04 Javascript
通过javascript把图片转化为字符画
Oct 24 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
Bootstrap布局方式详解
May 27 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 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
php 静态化实现代码
2009/03/20 PHP
浅析PHP开发规范
2018/02/05 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python默认参数调用方法解析
2020/02/09 Python
Python如何实现邮件功能
2020/05/27 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
大学校庆邀请函
2014/01/11 职场文书
教学器材管理制度
2014/01/26 职场文书
文秘求职信范文
2014/04/10 职场文书
文明寝室申报材料
2014/05/12 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
中班上学期个人总结
2015/02/12 职场文书
个性发展自我评价2015
2015/03/09 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python