[英]Move div with click and drag
我在一個網站上有一個 div,我目前正在處理它,我希望能夠通過單擊和拖動在頁面上移動它。
我在網上找到了一個很酷的腳本,我可以根據自己的需要進行更改,但它完全弄亂了 div 的大小。 ——好像div突然無視了所有的父母。 我對 JS 還是很陌生,似乎找不到導致這個問題的原因。
我在這里重現了這個問題: JSFiddle – 我還在 HTML 部分中添加了注釋,准確地解釋了這種情況。
這是腳本:
var mousePosition;
var offset = [0,0];
var object;
var isDown = false;
object = document.querySelector('#moveMe');
document.body.appendChild(object);
object.addEventListener('mousedown', function(e) {
isDown = true;
offset = [
object.offsetLeft - e.clientX,
object.offsetTop - e.clientY
];
}, true);
document.addEventListener('mouseup', function() {
isDown = false;
}, true);
document.addEventListener('mousemove', function(event) {
event.preventDefault();
if (isDown) {
mousePosition = {
x : event.clientX,
y : event.clientY
};
object.style.left = (mousePosition.x + offset[0]) + 'px';
object.style.top = (mousePosition.y + offset[1]) + 'px';
}
}, true);
問題是這里的這一行:
document.body.appendChild(object);
它將#myDiv
div 移動到<body>
,因此它不再將#wrapper
div 作為父級來設置寬度。
嘗試刪除該行,它將起作用。
現在,如果您想做一些更復雜的事情,您需要#myDiv
移動到主體,以便它高於所有其他元素,您將不得不添加更多的 JS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.