1. 程式人生 > >可拖動的懸浮div,相容手指觸控和滑鼠點選

可拖動的懸浮div,相容手指觸控和滑鼠點選

var flag = false;//滑鼠|手指是否按下的標記 var cur = {//記錄滑鼠|手指按下時的座標 x:0, y:0 } var nx,ny,dx,dy,x,y ; //按下時的函式 function down(){ flag = true;//確認滑鼠|手指按下 var touch ; if(event.touches){ touch = event.touches[0];//多個滑鼠|手指事件取第一個 }else { touch = event; } cur.x = touch.clientX; //記錄滑鼠|手指當前的x座標
cur.y = touch.clientY;//記錄滑鼠|手指當前的y座標 dx = div2.offsetLeft;//記錄div當時的左偏移量 dy = div2.offsetTop;//記錄div的上偏移量 } function move(){ if(flag){//如果是滑鼠|手指按下則繼續執行 var touch ; if(event.touches){ touch = event.touches[0]; }else { touch = event; } nx = touch.clientX - cur.x;//記錄在滑鼠|手指x軸移動的資料
ny = touch.clientY - cur.y;//記錄在滑鼠|手指y軸移動的資料 x = dx+nx; //div在x軸的偏移量加上滑鼠|手指在x軸移動的距離 y = dy+ny; //div在y軸的偏移量加上滑鼠|手指在y軸移動的距離 div2.style.left = x+"px"; div2.style.top = y +"px"; //阻止頁面的滑動預設事件 document.addEventListener("touchmove"
,function(){ event.preventDefault(); },false); } } //滑鼠|手指釋放時候的函式 function end(){ flag = false; //滑鼠|手指釋放 } var div2 = document.getElementById("div2"); div2.addEventListener("mousedown",function(){ down(); },false); div2.addEventListener("touchstart",function(){ down(); },false) div2.addEventListener("mousemove",function(){ move(); },false); div2.addEventListener("touchmove",function(){ move(); },false) document.body.addEventListener("mouseup",function(){ end(); },false); div2.addEventListener("touchend",function(){ end(); },false);