在購物網站中,加入購物車的功能是必須的功能,有的網站在用戶點擊加入購物車按鈕時,就會出現該商品從點擊出以拋物線的動畫相似加入購物車,這個功能看起來非常炫,對用戶體驗也有一定的提高。下面介紹基於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插件完成,我們只需定義起點和終點左邊以及結束后銷毀之前的動畫。
<div class="container"> <div class="demo clearfix"> <div class="per"> <img src="images/1.jpg" width="180" height="240" alt="圖片二"/> <div class="title">aaa</div> <a href="javascript:void(0);" class="button orange addcart">加入購物車</a> </div> <div class="per"> <img src="images/2.jpg" width="180" height="240" alt="圖片二"/> <div class="title">bbb</div> <a href="javascript:void(0);" class="button orange addcart">加入購物車</a> </div> </div> </div> <div class="cart-sidebar"> <div class="cart"> <i id="icon-cart"></i> <span>購物車</span> </div> </div> <div id="tip">成功加入購物車!</div> <script> $(function() { var offset = $("#icon-cart").offset(); $(".addcart").click(function(event) { var img = $(this).parent().children('img').attr('src'); //獲取當前點擊圖片鏈接 var flyer = $('<img class="flyer-img" src="' + img + '">'); //拋物體對象 flyer.fly({ start: { left: event.pageX,//拋物體起點橫坐標 top: event.pageY //拋物體起點縱坐標 }, end: { left: offset.left + 10,//拋物體終點橫坐標 top: offset.top + 10, //拋物體終點縱坐標 }, onEnd: function() { $("#tip").show().animate({width: '200px'},300).fadeOut(500);////成功加入購物車動畫效果 this.destory(); //銷毀拋物體 } }); }); }); <script>
$(window).resize(function() {
$('a[nctype="add_cart"]').click(function() {
flyToCart($(this));
});
});
function flyToCart($this) {
var rtoolbar_offset_left = $("#rtoolbar_cart").offset().left;
var rtoolbar_offset_top = $("#rtoolbar_cart").offset().top-$(document).scrollTop();
var img = $this.parents('.browse-goods:first').find('img:first').attr('src');
var data_gid = $this.attr('data-gid');
var flyer = $('<img class="u-flyer" src="'+img+'" style="z-index:999">');
flyer.fly({
start: {
left: $this.offset().left-450,
top: $this.offset().top-$(document).scrollTop()
},
end: {
left: rtoolbar_offset_left,
top: rtoolbar_offset_top,
width: 0,
height: 0
},
onEnd: function(){
addcart(data_gid,1,'');
flyer.remove();
}
});
}