gpt4 book ai didi

javascript - 仅使用 handle 拖动整个父 div

转载 作者:行者123 更新时间:2023-12-03 01:16:40 25 4
gpt4 key购买 nike

我打算拖动整个父 div,仅将 handle 附加到其左侧。请参阅下面的代码片段,30x30 图像现在是我的拖动 handle :

var DRAG_CLASS = "beingdragged";

div.ondragstart = function() {
this.classList.add(DRAG_CLASS);
};

div.ondragend = function() {
this.classList.remove(DRAG_CLASS);
};
img {
cursor: move;
float: left;
}

div {
border: 1px solid red;
background: lightblue;
width: 100%;
transform: 0.5s ease;
}

div.beingdragged {
width: 95%;
}
<!DOCTYPE html>
<html>
<body>
<div id="div" draggable="true"><img src="https://placehold.it/30x30">
<p>this is some text</p>
</div>
</body>

</html>

我希望当用户移动光标时整个 div 随光标一起移动,正如人们在拖动操作中所期望的那样。但是,正如您在输出中观察到的那样,即使我已将 draggable="true" 设置为整个父 div,也只有图像被拖动。即使光标四处移动,整个父 div 仍保持在原来的位置。

我已向 div 添加了一个类 DRAG_CLASS,因此如您所见,dragstartdragend 事件正确触发。

那么问题出在哪里呢?

最佳答案

当然,div 是可拖动的,正如您将其拖动到图像以外的其他位置时所看到的那样。

但是,默认情况下,图像也可以独立拖动。不过,使用 draggable="false" 或适当的 css 规则很容易禁用。

var DRAG_CLASS = "beingdragged";

div.ondragstart = function() {
this.classList.add(DRAG_CLASS);
};

div.ondragend = function() {
this.classList.remove(DRAG_CLASS);
};
img {
cursor: move;
float: left;
}

div {
border: 1px solid red;
background: lightblue;
width: 100%;
transform: 0.5s ease;
}

div.beingdragged {
width: 95%;
}
<!DOCTYPE html>
<html>
<body>
<div id="div" draggable="true"><img draggable="false" src="https://placehold.it/30x30">
<p>this is some text</p>
</div>
</body>

</html>

关于javascript - 仅使用 handle 拖动整个父 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983066/

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