avalonjs實現(xiàn)仿微博的圖片拖動特效
更新時間:2015年05月06日 10:19:32 投稿:hebedich
JavaScript實現(xiàn)仿微博的圖片拖動特效,貌似這些天有不少朋友需要這功能,今天發(fā)現(xiàn)這款是js制作的好,不敢獨享,希望需要的朋友喜歡哦。
效果:

HTML:
<div id='post_img' ms-controller='post_img'>
<ul id='post_img_inner' ms-mousemove='onmousemove'>
<li ms-repeat-el="post_img_list" class='inline-block' ms-mousedown='onmousedown($event,$index,el)' ms-attr-id='post_img_item{{$index}}'>
<img ms-src='el' class='uploaded_img'></li>
</ul>
</div>
JS:
var drag_holder=null,index=-1,ori_src=null,drag_flag=false;//拖動的代理,原圖片,原圖片的src
var post_img = avalon.define('post_img', function(vm) {
vm.post_img_list=[];//保存所有圖片的src
vm.onmousedown=function(e,i,el){
$('drag_proxy').style.display='block';
var target=e.target.parentNode;
var xx = e.clientX;
var yy = e.clientY;
$('drag_proxy').style.top=yy+'px';
$('drag_proxy').style.left=xx+'px';
if(target&&target.nodeName=='LI'){
ori_src=el;
index=target.getAttribute('id').substring(13);
$('drag_proxy').innerHTML=target.innerHTML;
post_img.post_img_list.splice(i, 1, 'about:blank');
}
drag_flag=true;
};
vm.onmousemove=function(e){
if(drag_flag){//如果點下了圖片
var xx = e.clientX;
var yy = e.clientY;
$('drag_proxy').style.top=yy+'px';
$('drag_proxy').style.left=xx+'px';
var x=xx-avalon($('post_img')).offset().left;
var y=yy-avalon($('post_img')).offset().top;
//例子沒有考慮滾動條的情況
var x_index=Math.floor(x/100);//圖片尺寸100*100
var y_index=Math.floor(y/100);
post_img.post_img_list.splice(index, 1);//刪除當前圖片的li
var target_index=3*y_index+x_index;//目標圖片的位置(3*3)
if(post_img.post_img_list.indexOf('about:blank')!=target_index)
//如果圖片數(shù)組中沒有src=about:blank這個占位置的li
post_img.post_img_list.splice(target_index, 0, 'about:blank');
//添加src=about:blank
index=target_index;
//會觸發(fā)很多次move,所以觸發(fā)一次就改動一次
}
};
});
document.onmouseup=function(e){
drag_holder=null;
if(ori_src){
post_img.post_img_list.splice(index, 1);
//刪除src=about:blank
post_img.post_img_list.splice(index, 0,ori_src);
//添加原圖片
}
$('drag_proxy').style.display='none';
$('drag_proxy').innerHTML='';
drag_flag=false;
};
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
簡易版本JSON.stringify的實現(xiàn)及其六大特性詳解
最近做項目發(fā)現(xiàn)JSON.stringify()使用場景真的挺多,我們都知道JSON.stringify()的作用是將JavaScript對象轉(zhuǎn)換為JSON字符串,下面這篇文章主要給大家介紹了JSON.stringify的實現(xiàn)及其六大特性的相關(guān)資料,需要的朋友可以參考下2021-10-10
JavaScript運動框架 解決防抖動問題、懸浮對聯(lián)(二)
這篇文章主要為大家詳細介紹了JavaScript運動框架的第二部分,解決防抖動問題、懸浮對聯(lián)問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
如何設(shè)置一定時間內(nèi)只能發(fā)送一次請求
這篇文章主要介紹了如何設(shè)置一定時間內(nèi)只能發(fā)送一次請求,需要的朋友可以參考下2014-02-02
javascript實現(xiàn)table單元格點擊展開隱藏效果(實例代碼)
這篇文章主要介紹了javascript實現(xiàn)table單元格點擊展開隱藏效果的實例代碼講解,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-04-04

