【发布时间】:2016-04-06 08:16:37
【问题描述】:
我想在我的页面上拖放一些元素。当我使用下面的代码时,元素通过触摸移动,但它不会停留在我点击的手指附近(例如在元素的中心或左/右底部),而是从手指移动到右下角。我想要的 - 是能够通过我点击的点移动元素拖动它。
function touchStart(e) {
e.preventDefault();
var whichArt = e.target;
resetZ();
whichArt.style.zIndex = 10;
}
function touchMove(e) {
e.preventDefault();
var dragElem = e.target;
var touch = e.touches[0];
var positionX = touch.pageX;
var positionY = touch.pageY;
dragElem.style.left = positionX + 'px';
dragElem.style.top = positionY + 'px';
}
document.querySelector('body').addEventListener('touchstart', touchStart, false);
document.querySelector('body').addEventListener('touchmove', touchMove, false);
<!--elements I want to drag-->
<img draggable="true" id="one" src="images/one.svg" style="position: absolute; left: 50px; top: 120px; z-index: 3;">
<img draggable="true" id="two" src="images/two.svg" style="position: absolute; left: 367px; top: 150px; z-index: 3;">
我也尝试过不同的东西来计算左右位置,但是失败了,例如:
var moveOffsetX = dragElem.offsetLeft - touch.pageX;
var moveOffsetY = dragElem.offsetTop - touch.pageY;
var positionX = touch.pageX - moveOffsetX; /* + also tried*/
var positionY = touch.pageY - moveOffsetY; /* + also tried*/
那么如何才能实现正确的行为呢?
【问题讨论】:
标签: javascript drag-and-drop touch