加入购物车飞入特效

效果图:

 

 

css样式:

 1  <style type="text/css">
 2         .demo{width:820px; margin:60px auto 10px auto}
 3         .m-sidebar{position: fixed;top: 0;right: 0;background: #000;z-index: 2000;width: 35px;height: 100%;font-size: 12px;color: #fff;}
 4         .cart{color: #fff;text-align:center;line-height: 20px;padding: 200px 0 0 0px;}
 5         .cart span{display:block;width:20px;margin:0 auto;}
 6         .cart i{width:35px;height:35px;display:block; background:url(car.png) no-repeat;}
 7         #msg{position:fixed; top:300px; right:35px; z-index:10000; width:1px; height:52px; line-height:52px; font-size:20px; text-align:center; color:#fff; background:#360; display:none}
 8 
 9         .box{float:left; width:198px; height:320px; margin-left:5px; border:1px solid #e0e0e0; text-align:center}
10         .box p{line-height:20px; padding:4px 4px 10px 4px; text-align:left}
11         .box:hover{border:1px solid #f90}
12         .box h4{line-height:32px; font-size:14px; color:#f30;font-weight:500}
13         .box h4 span{font-size:20px}
14         .u-flyer{display: block;width: 50px;height: 50px;border-radius: 50px;position: fixed;z-index: 9999;}
15 
16         .button {
17             display: inline-block;
18             outline: none;
19             cursor: pointer;
20             text-align: center;
21             text-decoration: none;
22             font: 16px/100% 'Microsoft yahei',Arial, Helvetica, sans-serif;
23             padding: .5em 2em .55em;
24             text-shadow: 0 1px 1px rgba(0,0,0,.3);
25             -webkit-border-radius: .5em;
26             -moz-border-radius: .5em;
27             border-radius: .5em;
28             -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
29             -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
30             box-shadow: 0 1px 2px rgba(0,0,0,.2);
31         }
32         .button:hover {
33             text-decoration: none;
34         }
35         .button:active {
36             position: relative;
37             top: 1px;
38         }
39         /* orange */
40         .orange {
41             color: #fef4e9;
42             border: solid 1px #da7c0c;
43             background: #f78d1d;
44             background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));
45             background: -moz-linear-gradient(top,  #faa51a,  #f47a20);
46             filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20');
47         }
48         .orange:hover {
49             background: #f47c20;
50             background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));
51             background: -moz-linear-gradient(top,  #f88e11,  #f06015);
52             filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015');
53         }
54         .orange:active {
55             color: #fcd3a5;
56             background: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a));
57             background: -moz-linear-gradient(top,  #f47a20,  #faa51a);
58             filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#f47a20', endColorstr='#faa51a');
59         }
60     </style>

javascript源码:

jquery.fly.min.js 插件源码(可从网上下载):
1 !function(a){a.fly=function(b,c){var d={version:"1.0.0",autoPlay:!0,vertex_Rtop:20,speed:1.2,start:{},end:{},onEnd:a.noop},e=this,f=a(b);e.init=function(a){this.setOptions(a),!!this.settings.autoPlay&&this.play()},e.setOptions=function(b){this.settings=a.extend(!0,{},d,b);var c=this.settings,e=c.start,g=c.end;f.css({marginTop:"0px",marginLeft:"0px",position:"fixed"}).appendTo("body"),null!=g.width&&null!=g.height&&a.extend(!0,e,{width:f.width(),height:f.height()});var h=Math.min(e.top,g.top)-Math.abs(e.left-g.left)/3;h<c.vertex_Rtop&&(h=Math.min(c.vertex_Rtop,Math.min(e.top,g.top)));var i=Math.sqrt(Math.pow(e.top-g.top,2)+Math.pow(e.left-g.left,2)),j=Math.ceil(Math.min(Math.max(Math.log(i)/.05-75,30),100)/c.speed),k=e.top==h?0:-Math.sqrt((g.top-h)/(e.top-h)),l=(k*e.left-g.left)/(k-1),m=g.left==l?0:(g.top-h)/Math.pow(g.left-l,2);a.extend(!0,c,{count:-1,steps:j,vertex_left:l,vertex_top:h,curvature:m})},e.play=function(){this.move()},e.move=function(){var b=this.settings,c=b.start,d=b.count,e=b.steps,g=b.end,h=c.left+(g.left-c.left)*d/e,i=0==b.curvature?c.top+(g.top-c.top)*d/e:b.curvature*Math.pow(h-b.vertex_left,2)+b.vertex_top;if(null!=g.width&&null!=g.height){var j=e/2,k=g.width-(g.width-c.width)*Math.cos(j>d?0:(d-j)/(e-j)*Math.PI/2),l=g.height-(g.height-c.height)*Math.cos(j>d?0:(d-j)/(e-j)*Math.PI/2);f.css({width:k+"px",height:l+"px","font-size":Math.min(k,l)+"px"})}f.css({left:h+"px",top:i+"px"}),b.count++;var m=window.requestAnimationFrame(a.proxy(this.move,this));d==e&&(window.cancelAnimationFrame(m),b.onEnd.apply(this))},e.destory=function(){f.remove()},e.init(c)},a.fn.fly=function(b){return this.each(function(){void 0==a(this).data("fly")&&a(this).data("fly",new a.fly(this,b))})}}(jQuery);
View Code

 

jquery.min.js (可从网上自行下载,以后不再重复显示)
requestAnimationFrame.js 插件源码,兼容ie(可从网上下载):

 

 1 (function () {
 2   var lastTime = 0;
 3   var vendors = ['webkit', 'moz'];
 4   for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
 5     window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
 6     window.cancelAnimationFrame =
 7       window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
 8   }
 9 
10   if (!window.requestAnimationFrame){
11     window.requestAnimationFrame = function (callback, element) {
12       var currTime = new Date().getTime();
13       var timeToCall = Math.max(0, 16 - (currTime - lastTime));
14       var id = window.setTimeout(function () {
15           callback(currTime + timeToCall);
16         },
17         timeToCall);
18       lastTime = currTime + timeToCall;
19       return id;
20     };
21   }
22   if (!window.cancelAnimationFrame){
23     window.cancelAnimationFrame = function (id) {
24       clearTimeout(id);
25     };
26   }
27 }());
View Code

 

 

调用插件,页面js:

 1 $(function() {
 2         var offset = $("#end").offset();
 3         $(".addcar").click(function(event){
 4             var addcar = $(this);
 5             var img = addcar.parent().find('img').attr('src');
 6             var flyer = $('<img class="u-flyer" src="'+img+'">');
 7             flyer.fly({
 8                 start: {
 9                     left: event.pageX, //开始位置(必填)#fly元素会被设置成position: fixed
10                     top: event.pageY //开始位置(必填)
11                 },
12                 end: {
13                     left: offset.left+10, //结束位置(必填)
14                     top: offset.top+10, //结束位置(必填)
15                     width: 0, //结束时宽度
16                     height: 0 //结束时高度
17                 },
18                 onEnd: function(){ //结束回调
19                     $("#msg").show().animate({width: '250px'}, 200).fadeOut(1000); //提示信息
20                     addcar.css("cursor","default").removeClass('orange').unbind('click');
21                     this.destory(); //移除dom
22                 }
23             });
24         });
25     });

 

HTML源码:

 1 <script src="../jquery/jquery.min.js"></script>
 2 <script src="jquery.fly.min.js"></script>
 3 <script src="requestAnimationFrame.js"></script>
 4 
 5 <div class="box">
 6     <img src="images/lg.jpg" width="180" height="180">
 7     <h4><span>3499.00</span></h4>
 8     <p>LG 49LF5400-CA 49寸IPS硬屏富贵招财铜钱设计</p>
 9     <a href="#" class="button orange addcar">加入购物车</a>
10 </div>
11 <div class="box">
12     <img src="images/hs.jpg" width="180" height="180">
13     <h4><span>3799.00</span></h4>
14     <p>Hisense/海信 LED50T1A 海信电视官方旗舰店</p>
15     <a href="#" class="button orange addcar">加入购物车</a>
16 </div>
17 <div class="box">
18     <img src="images/cw.jpg" width="180" height="180">
19     <h4><span>¥3999.00</span></h4>
20     <p>Skyworth/创维 50E8EUS 8核4Kj极清酷开系统智能液晶电视</p>
21     <a href="#" class="button orange addcar">加入购物车</a>
22 </div>
23 <div class="box">
24     <img src="images/ls.jpg" width="180" height="180">
25     <h4><span>6969.00</span></h4>
26     <p>乐视TV Letv X60S 4核1080P高清3D安卓智能超级电视</p>
27     <a href="#" class="button orange addcar">加入购物车</a>
28 </div>
29 <div class="m-sidebar">
30     <div class="cart">
31         <i id="end"></i>
32         <span>购物车</span>
33     </div>
34 </div>
35 <div id="msg">已成功加入购物车!</div>

 

 
posted @ 2017-06-19 18:07  曦言鸢默  阅读(406)  评论(0编辑  收藏  举报