在购物网站中,加入购物车的功能是必须的功能,有的网站在用户点击加入购物车按钮时,就会出现该商品从点击出以抛物线的动画相似加入购物车,这个功能看起来非常炫,对用户体验也有一定的提高。下面介绍基于jquery fly插件实现加入购物车抛物线动画效果。使用jquery.fly插件很方便时实现抛物线动画加入购物车的功能
一、插件下载
插件官方:https://github.com/amibug/fly
二、载入jQuery库文件和jquery.fly.min.js插件
<script src=
"jquery.js"
></script>
<script src=
"jquery.fly.min.js"
></script>
三、加入购物车动画飞入效果实例
我们要实现的效果是:当点击“加入购物车”按钮后,商品图片会变成一个缩小的圆球,以按钮为起点,向右侧以抛物线的形式飞出到右侧的购物车里。在飞出之前,我们要获取当前商品的图片,然后调用fly插件,之后的抛物线轨迹都是由fly插件完成,我们只需定义起点和终点左边以及结束后销毁之前的动画。
完整代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery.fly 模仿天猫飞入购物车特效抛物线</title> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src='http://auan.cn/js/jquery.fly.js'></script> <script src="https://cdn.bootcss.com/jquery-requestAnimationFrame/0.2.1/jquery.requestanimationframe.min.js"></script> <style> .box{width: 180px;height:260px;border: 1px solid #ebebeb;text-align: center;float: left;margin:10px;} .box h4{line-height:22px;margin:0; font-size:14px; color:#f30;font-weight:500} .box h4 span{font-size:20px} .box .button{display:inline-block;color:#fff;border-radius:5px; text-decoration:none;padding:6px 20px;background: #ff8f2f;margin-top:4px;} .box .button:active{background: #d07127;} .u-flyer{display: block;width: 50px;height: 50px;border-radius: 50px;position: fixed;z-index: 9999;} .m-sidebar{position: fixed;top:0;right: 0;background: #000000;z-index: 2000;width: 35px;height: 100%;font-size: 12px;color: #fff;} .cart{color: #fff;text-align:center;line-height: 20px;padding: 200px 0 0 0px;margin: 200px 0;position:relative;} .cart #end{display:inline-block;width:20px;height:20px;} .cart span{display:block;width:20px;margin:0 auto;} .cart span.num{display: none;color: white;position: absolute;left: 8.2px;top: 175px;width: 20px;height: 20px;border-radius: 50%;text-align: center;line-height: 20px;background-color: red; } </style> </head> <body> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01cOZIPJ2Exwbh47SJJ_!!0-juitemmedia.jpg_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01Z4oux51zpV4CXg4ad_!!2-juitemmedia.png_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/bao/uploaded/i3/TB10YeXPpXXXXbGXFXXXXXXXXXX_!!0-item_pic.jpg_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01cOZIPJ2Exwbh47SJJ_!!0-juitemmedia.jpg_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01Z4oux51zpV4CXg4ad_!!2-juitemmedia.png_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/bao/uploaded/i3/TB10YeXPpXXXXbGXFXXXXXXXXXX_!!0-item_pic.jpg_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01cOZIPJ2Exwbh47SJJ_!!0-juitemmedia.jpg_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="box"> <img src="https://img.alicdn.com/tps/i2/O1CN01Z4oux51zpV4CXg4ad_!!2-juitemmedia.png_180x180q90.jpg_.webp" width="180" height="180"> <h4>¥<span>300</span></h4> <a href="javascript:;" class="button orange addcar">加入购物车</a> </div> <div class="m-sidebar"> <div class="cart"> <span class="num">0</span> <i id="end"></i> <span>购物车</span> </div> </div> <script> $(function () { var num = 0; var offset=$('#end').offset(); //页面大小变化后触发的resize()事件中,要重新获取offset属性,否则会导致飞入位置错误 $(window).resize(site); function site() { offset = $('#end').offset(); } //点击商品 $('.box').on('click','a',function () { var addcar = $(this); var img = addcar.parent().find('img').attr('src'); var flyer = $('<img class="u-flyer" src="'+img+'">'); console.log(offset,'event.pageX='+event.pageX,'event.pageY='+event.pageY); //执行动作 flyer.fly({ start:{ left:(event.pageX-20),//开始位置(必填)#fly元素会被设置成position: fixed top:(event.pageY-100),//开始位置(必填) }, end:{ left:offset.left, //结束位置(必填) top:offset.top, //结束位置(必填) width:20, //结束时高度 height:20, //结束时高度 }, //autoPlay: false, //是否直接运动,默认true speed: 1.1, //越大越快,默认1.2 vertex_top: 100, //运动轨迹最高点top值,默认20 onEnd: function(){//结束回调 console.log('加入购物车成功~'); num++; $('.cart span.num').show().text(num); } }); //$('#fly').play(); //autoPlay: false后,手动调用运动 //$('#fly').destroy(); //移除dom }) }) </script> </body> </html>
© 著作权归作者所有
文章评论(0)