gpt4 book ai didi

javascript - 可拖动 div 中的位置错误

转载 作者:行者123 更新时间:2023-11-28 13:21:53 25 4
gpt4 key购买 nike

我有一个行为有点奇怪的 div,当我第一次移动它时它工作正常,但第二次位置开始出错我在主 div 中有 position: absolute,但仅此而已。

知道如何清除窃听器吗? http://jsfiddle.net/dymond/tQdFZ/14/ <-- jsfiddle

javascript.

var draggable = document.getElementsByClassName('hand'),
draggableCount = draggable.length,
i, currZ = 1;


function startDrag(evt) {

var diffX = evt.clientX - this.offsetLeft,
diffY = evt.clientY - this.offsetTop,
that = this;
this.style.opacity = "0.5";
this.style.zIndex = currZ++;

function moveAlong(evt) {
that.parentNode.style.left = (evt.clientX - diffX) + 'px';
that.parentNode.style.top = (evt.clientY - diffY) + 'px';
}
function stopDrag() {
document.removeEventListener('mousemove', moveAlong);
document.removeEventListener('mouseup', stopDrag);
changeClass()
}
function changeClass() {
var diceClass = document.getElementsByClassName("hand");
for (var i = 0; i < diceClass.length; i++) {
diceClass[i].style.opacity = "1";
}
}

document.addEventListener('mouseup', stopDrag);
document.addEventListener('mousemove', moveAlong);
}

for (i = 0; i < draggableCount; i += 1) {
draggable[i].addEventListener('mousedown', startDrag);
}

CSS

**.draggable {
position: absolute;
width: 100px;
height: 100px;
background: red;
}

.hand{
cursor : move;
width: 98px;
min-height: 16px;
background: yellow;
border:1px solid black;

}
textarea{
padding-top:20px;
resize : none;
overflow : hidden;
background : transparent;
width:95px;
border:none;
}

最佳答案

this

offsetLeftoffsetTop 总是0,因为this 指的是.hand 不是 .dragabble 所以这个:

    var diffX = evt.clientX - this.offsetLeft,
diffY = evt.clientY - this.offsetTop,

应该是这样的:

    var diffX = evt.clientX - this.parentNode.offsetLeft,
diffY = evt.clientY - this.parentNode.offsetTop,

更新 fiddle :http://jsfiddle.net/knoxzin1/tQdFZ/15/

关于javascript - 可拖动 div 中的位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com