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简单体验
Jan 10 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
JS选项卡动态替换banner图片路径的方法
May 11 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
数组Array的排序sort方法
Feb 17 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 Javascript
深入了解JavaScript 防抖和节流
Sep 12 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
JavaScript中的私有成员
2006/09/18 Javascript
静态的动态续篇之来点XML
2006/12/23 Javascript
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
解决Python3中的中文字符编码的问题
2018/07/18 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
大家访活动实施方案
2014/03/10 职场文书
广播体操口号
2014/06/18 职场文书
优秀教师单行材料
2014/12/16 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
统计员岗位职责范本
2015/04/14 职场文书
人口与计划生育责任书
2015/05/09 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
德能勤绩工作总结
2015/08/11 职场文书