日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript适配移动端的移动元素方法

發(fā)布時(shí)間:2023/12/18 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript适配移动端的移动元素方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

難點(diǎn):移動(dòng)端與pc端的事件屬性不一樣,需要計(jì)算好偏移量才能跟著移動(dòng)。

一、原理

首先需要獲取到點(diǎn)擊的位置距離元素el距離(top,left)

在添加移動(dòng)事件:通過每次獲得移動(dòng)獲得到在頁面的具體位置(x,y)

元素el所距離page邊框的距離為:

左邊距離 = x - left;

上邊距離 = y - left;

二、具體實(shí)現(xiàn)

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head><body><div id="block"></div> </body> <style>#block {width: 100px;height: 100px;background-color: orangered;position: fixed;} </style><script>var el = document.querySelector("#block")var t1;var Top = 0;var Left = 0;function moveEl(e) {//判斷是否有延遲函數(shù)if (t1 != -1) {clearTimeout(t1);t1 = -1;}let clientY = e.clientY ?? e.touches[0].clientY;let clientX = e.clientX ?? e.touches[0].clientX;el.style.top = clientY - Top + "px";el.style.left = clientX - Left + "px";console.log(Top);}//鼠標(biāo)點(diǎn)擊和觸屏點(diǎn)擊function mouseDown(e) {// 移動(dòng)端無法直接獲取與父元素的位置信息,// 所以需要減去父元素與頁面的位置:parseInt(win.value.style.top)Top = e.offsetY ?? e.touches[0].pageY - parseInt(el.style.top || 0);Left = e.offsetX ?? e.touches[0].pageX - parseInt(el.style.left || 0);//取消拖動(dòng)時(shí)會(huì)選中文字,不取消會(huì)出現(xiàn)事件無法取消bugdocument.body.onselectstart = document.body.ondrag = function () {return false;};// 添加事件window.addEventListener("mousemove", moveEl);// 適配觸摸屏window.addEventListener("touchmove", moveEl);}// 鼠標(biāo)右鍵松開事件function mouseUp(e) {//取消拖動(dòng)時(shí)不會(huì)選中文字document.body.onselectstart = document.body.ondrag = function () {return true;};// 移出事件window.removeEventListener("mousemove", moveEl);//適配觸摸window.removeEventListener("touchmove", moveEl);}// 鼠標(biāo)移出事件function mouseOut() {//解決頻繁移出bugif (t1 != -1) return;//由于瀏覽器刷新有延遲需防抖移出t1 = setTimeout(() => {window.removeEventListener("mousemove", moveEl);}, 800);}el.addEventListener("mousedown", mouseDown)el.addEventListener("mouseup", mouseUp)el.addEventListener("mouseout", mouseOut)// 移動(dòng)端事件el.addEventListener("touchstart", mouseDown)el.addEventListener("touchend", mouseUp)</script></html>

總結(jié)

以上是生活随笔為你收集整理的JavaScript适配移动端的移动元素方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。