可拖動的懸浮div,相容手指觸控和滑鼠點選
阿新 • • 發佈:2019-01-28
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);