移动端:拖拽元素
Posted 乱舞春秋__
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端:拖拽元素相关的知识,希望对你有一定的参考价值。
鼠标可以对元素进行拖拽,元素随着鼠标的移动而移动。
主要用到了touchstart事件和touchmove事件。
核心思想:
(1)点击元素时,获取初始位置:
div.addEventListener('touchstart', function (e) {
x = this.offsetLeft;
y = this.offsetTop;
startX = e.targetTouches[0].pageX;
startY = e.targetTouches[0].pageY;
});
(2)移动过程中,获取移动距离,并赋值给left和top:
div.addEventListener('touchmove', function (e) {
e.preventDefault();
var moveX = e.targetTouches[0].pageX - startX;
var moveY = e.targetTouches[0].pageY - startY;
this.style.left = x + moveX + 'px';
this.style.top = y + moveY + 'px';
})
注意:元素需要设置定位属性。
完整代码:
<!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>
<style>
div {
position: absolute;
width: 100px;
height: 100px;
background-color: rgba(27, 192, 41, 0.582);
}
</style>
</head>
<body>
<div></div>
<script>
var div = document.querySelector('div');
var x;
var y;
var startX;
var startY;
div.addEventListener('touchstart', function (e) {
x = this.offsetLeft;
y = this.offsetTop;
startX = e.targetTouches[0].pageX;
startY = e.targetTouches[0].pageY;
});
div.addEventListener('touchmove', function (e) {
e.preventDefault();
var moveX = e.targetTouches[0].pageX - startX;
var moveY = e.targetTouches[0].pageY - startY;
this.style.left = x + moveX + 'px';
this.style.top = y + moveY + 'px';
})
</script>
</body>
</html>
可对小块进行拖动:
以上是关于移动端:拖拽元素的主要内容,如果未能解决你的问题,请参考以下文章