实现代码,请在端预览,PC端无效果
<!DOCTYPE html> <html> <head> <meta set="UTF-8"> <title>ss</title> <style> * { touch-action: pan-y; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; } #div1 { width: 50px; height: 50px; background: cyan; position: absolute; } </style> <script typet="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <h3>请在端预览,PC端无效果</h3> <div id="div1"></div> <script> var div1 = document.querySelector('#div1'); //限制最大宽高,不让滑块出去 var maxW = document.body.clientWidth - div1.offsetWidth; var maxH = document.body.clientHeight - div1.offsetHeight; //手指触摸开始,记录div的初始位置 div1.addEventListener('touchstart', function(e) { var ev = e || window.event; var touch = ev.targetTouches[0]; oL = touch.clientX - div1.offsetLeft; oT = touch.clientY - div1.offsetTop; document.addEventListener("touchmove", defaultEvent, false); }); //触摸中的,位置记录 div1.addEventListener('touchmove', function(e) { var ev = e || window.event; var touch = ev.targetTouches[0]; var oLeft = touch.clientX - oL; var oTop = touch.clientY - oT; if (oLeft < 0) { oLeft = 0; } else if (oLeft >= maxW) { oLeft = maxW; } if (oTop < 0) { oTop = 0; } else if (oTop >= maxH) { oTop = maxH; } div1.style.left = oLeft + 'px'; div1.style.top = oTop + 'px'; }); //触摸结束时的处理 div1.addEventListener('touchend', function() { document.removeEventListener("touchmove", defaultEvent); }); //阻止默认事件 function defaultEvent(e) { e.preventDefault(); } </script> </body> </html>