利用jquery.fly实现仿淘宝购物车飞入特效

利用jquery.fly实现仿淘宝购物车飞入特效

标签: 淘宝网javascriptjquery-fly购物车飞入特效

学习在于积累,今天利用jquery.fly实现仿淘宝购物车飞入特效,虽然实现起来简单,但实际使用时有一堆坑需要注意。结合实际项目经验,我简单的总结了一下到底有哪些坑需要去填。

参考网址:github:https://github.com/amibug/fly

从以上网址下载js文件即可使用。

一:载入页面

  <script src="../lib/jquery/dist/jquery.min.js"></script>
  <script src="../lib/fly-master/dist/jquery.fly.min.js"></script>
  <script src="../lib/fly-master/src/requestAnimationFrame.js"></script>


    
    

tips:requestAnimationFrame.js文件是用来兼容IE8以下的游览器的

二:实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>淘宝购物车飞入特效</title>
    <script src="../lib/jquery/dist/jquery.min.js"></script>
    <script src="../lib/fly-master/dist/jquery.fly.min.js"></script>
    <script src="../lib/fly-master/src/requestAnimationFrame.js"></script>
    <style>
        .box{
            width: 198px;
            height: 320px;
            border: 1px solid #e0e0e0;
            text-align: center;
        }
        .box h4{line-height:32px; font-size:14px; color:#f30;font-weight:500}
        .box h4 span{font-size:20px}
        .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}
        .cart span{display:block;width:20px;margin:0 auto;}
    </style>
</head>
<body>
<div class="box">
    <img src="../logo.jpg" width="180" height="180">
    <h4>¥<span>300</span></h4>
    <a href="#" class="button orange addcar">加入购物车</a>
</div>

<div class="m-sidebar">
    <div class="cart">
        <i id="end"></i>
        <span>购物车</span>
    </div>
</div>

<script>
    $(function () {
        var offset=$('#end').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)
                flyer.fly({
                    start:{
                        left:event.pageX,
                        top:event.pageY
                    },
                    end:{
                        left:offset.left,
                        top:offset.top,
                        width:0,
                        height:0
                    }

                })
            })
    })
</script>
</body>
</html>


    
    

效果图展示:

这里写图片描述

这个是简单的实现,实际项目的实现就不发出来了,为了节省各位看官的时间,我还是先把遇到的坑给总结出来吧。

天坑一:页面大小变化,飞入位置错误

问题原因:代码只获取了一次offset,所以页面发生改变后,虽然offset也发生了改变,但是程序中的offset还是以前的值。

解决方法:我们在页面改变是触发的resize()事件中,重新获取offset属性即可,具体代码:

$(window).resize(site);
 function site() {
     offset=$('#end').offset();
}


    
    

天坑二:代码写的没问题,但是结束位置的offset错误,而且总是偏大

问题原因: offset在获取初始值时,会受到滚动条的影响,当有上下滚动条或者左右滚动条时,offset的位置就会相应的偏大。

解决方法: 让页面的scoll值为0,并且每次改变页面也归置为0,具体代码:

$(window).scrollTop(0);
$(window).resize(site);
 function site() {
    $(window).scrollTop(0);
    offset=$('#end').offset();

}


    
    

天坑三:offset没问题了,但是起飞时又有问题,起飞的位置也偏大

问题原因: 依然是受到scoll的影响,所以我们实际的起飞位置应该是page的值减去scoll的值

解决方法: 起飞位置=page的值 - scoll的值,具体代码:

var scrollTop;
$(window).scroll(function() { 
    scrollTop=$(window).scrollTop(); 
});

start: {
            left: event.pageX,
            top: event.pageY-scrollTop
            }

    
    

以上问题都解决完以后,基本就能做出比较完美的飞入特效了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
js加入购物车抛物线动画与购物车效果特效,亲测可用, 当您在电商购物网站浏览中意的商品时,您可以点击页面中的“加入购物车”按钮即可将商品加入的购物车中。本文介绍借助一款基于jQuery的动画插件,点击加入购物车按钮时,实现商品将飞入到右侧的购物车中的效果。 HTML 首先载入jQuery库文件和jquery.fly.min.js插件。 复制代码 代码如下: 接着,将商品信息html结构布置好,本例中,我们用四个商品并排布置,每个商品box中包括有商品图片、价格、名称以及加入购物车按钮等信息。 复制代码 代码如下: ¥3499.00 LG 49LF5400-CA 49寸IPS硬屏富贵招财铜钱设计 加入购物车 ¥3799.00 Hisense/海信 LED50T1A 海信电视官方旗舰店 加入购物车 ¥¥3999.00 Skyworth/创维 50E8EUS 8核4Kj极清酷开系统智能液晶电视 加入购物车 ¥6969.00 乐视TV Letv X60S 4核1080P高清3D安卓智能超级电视 加入购物车 然后,我们还需要在页面的右侧加上购物车以及提示信息。 复制代码 代码如下: 购物车 已成功加入购物车! CSS 我们使用CSS先将商品排列美化,然后设置右侧购物车样式,具体请看代码: 复制代码 代码如下: .box{float:left; width:198px; height:320px; margin-left:5px; border:1px solid #e0e0e0; text-align:center} .box p{line-height:20px; padding:4px 4px 10px 4px; text-align:left} .box:hover{border:1px solid #f90} .box h4{line-height:32px; font-size:14px; color:#f30;font-weight:500} .box h4 span{font-size:20px} .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: #000;z-index: 2000;width: 35px;height: 100%;font-size: 12px;color: #fff;} .cart{color: #fff;t

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值