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 相关文章推荐
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
Feb 17 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
微信小程序支付前端源码
Aug 29 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
vuejs实现下拉框菜单选择
Oct 23 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根据生日计算年龄的方法
2015/07/13 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
对Python3中的input函数详解
2018/04/22 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python实现桌面气泡提示功能
2019/07/29 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
学python最电脑配置有要求么
2020/07/05 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
市三好学生主要事迹
2014/01/28 职场文书
社区活动邀请函范文
2014/01/29 职场文书
幼儿园运动会口号
2014/06/07 职场文书
五一口号
2014/06/19 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
第二次离婚起诉书
2015/05/18 职场文书
深度学习详解之初试机器学习
2021/04/14 Python