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 相关文章推荐
javascript Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
JavaScript中的连字符详解
Nov 28 Javascript
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 Javascript
JavaScript字符串检索字符的方法
Jun 23 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
Vue中props的使用详解
Jun 15 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
vue 微信扫码登录(自定义样式)
Jan 06 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP时间戳使用实例代码
2008/06/07 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
javascript操作cookie
2017/01/17 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
python 实现UTC时间加减的方法
2018/12/31 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
python机器学习库xgboost的使用
2020/01/20 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
部队2014年终工作总结
2014/11/27 职场文书
高考1977观后感
2015/06/04 职场文书
《观察物体》教学反思
2016/02/17 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis
JS实现九宫格拼图游戏
2022/06/28 Javascript