今天做了个 两个元素互换位置 的动画 ,记录一下
首先 获得两个元素得绝对坐标定位
然后通过animation 实现移动
其他效果 按自己喜好添加
(function($){
$.extend({
animationExchange:function(srcObj,destObj,src_func,dest_func){
//交换两个元素的位置
//源绝对位置
var src_p = getXAndY(srcObj);
//目标绝对位置
var dest_p = getXAndY(destObj);
var height = srcObj.height();
var width = srcObj.width();
//创建两个div
var div1 = '<div class="srcDiv" style="border:1px solid #dfdfdf;box-shadow:0 0 10px rgba(0,0,0,0.3);color:#fff;line-height:38px;background-color:#70acea;text-align:center;width:'+width+'px;height:'+height+'px;top:'+src_p.y+'px;left:'+src_p.x+'px;position:absolute;z-index:199;">'+srcObj.text()+'</div>';
var div2 = '<div class="destDiv" style="border:1px solid #dfdfdf;box-shadow:0 0 10px rgba(0,0,0,0.3);color:#fff;line-height:38px;background-color:#f3b55b;text-align:center;width:'+width+'px;height:'+height+'px;top:'+dest_p.y+'px;left:'+dest_p.x+'px;position:absolute;z-index:199;">'+destObj.text()+'</div>';
$('body').append(div1+div2);
srcObj.html('');
destObj.html('');
$('.srcDiv').animate({top:dest_p.y,left:dest_p.x},1000,src_func);
$('.destDiv').animate({top:src_p.y,left:src_p.x},1000,dest_func);
}
});
function getXAndY(obj){
//获取元素在body中的绝对位置
var x = obj.offset().left;
var y = obj.offset().top;
return {x:x,y:y};
}
})(jQuery);
获得两个 td 的绝对坐标
创建 两个div ,将 两个td 的值放进去
将td 的文本清空
通过 animate 移动两个div
div移动到指定位置后 停留100 毫秒 删除div 同时 交换 td 的值