欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现移动端触屏拖拽功能

程序员文章站 2022-08-11 08:30:10
1.html
2.css * { margin: 0; padding: 0;...

1.html

<div id="div1"></div>

2.css

* {
 margin: 0;
 padding: 0;
}
html,
body {
 width: 100%;
 height: 100%;
}
#div1 {
 width: 50px;
 height: 50px;
 background: cyan;
 position: absolute;
}

3.js

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();
}

3.效果

JS实现移动端触屏拖拽功能

JS实现移动端触屏拖拽功能

4.几点说明

      对于触屏手机端用手指事件,对于pc端用鼠标事件,其实原理都一样。

总结

以上所述是小编给大家介绍的js实现移动端触屏拖拽功能,希望对大家有所帮助