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取得url地址参数实例
Feb 22 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
jquery序列化表单去除指定元素示例代码
Apr 10 Javascript
给js文件传参数(详解)
Jul 13 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
Jun 03 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
Oct 10 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
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
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
python3调用R的示例代码
2018/02/23 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
linux面试题参考答案(1)
2016/01/22 面试题
Shell如何接收变量输入
2016/08/06 面试题
数控技术专业推荐信
2013/11/01 职场文书
超市业务员岗位职责
2013/12/05 职场文书
优秀求职信范文分享
2013/12/19 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android