gpt4 book ai didi

javascript - javascript中的可拖动元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:14 24 4
gpt4 key购买 nike

如果我想让一个 div 可拖动,我是否必须指定一个引用父级?例如在 jquery 中,当一个元素是可拖动的时,它是否有一个引用父级?

最佳答案

要拖动元素,您只需添加draggable 属性并将其值设置为true

这不适用于 Internet Explorer 8 或更早版本等古老的浏览器,因为它们也不支持 draggable 属性。

您可能想到的是放置目标。默认情况下,元素可能不会被放入其他元素中。

请务必注意,以下拖动事件需要一个event 参数。

  • ondrag:元素被拖动时触发

  • ondragstart - 拖动过程开始时触发事件

  • ondragend - 拖动过程完成时触发事件

  • ondragenter - 当拖动的元素进入放置目标时触发事件

  • ondragleave - 当拖动的元素离开放置目标时触发事件

  • ondragover - 当拖动的元素位于放置目标上方时触发事件

要允许放置,我们必须通过 event.preventDefault 更改浏览器的默认行为。

此示例由 W3Schools 提供。但是,它解释了拖放功能。不幸的是,没有用于拖放事件的伪类,因此我们需要使用原生 JavaScript。

http://www.w3schools.com/jsref/event_ondragstart.asp

var demo = document.getElementById("demo");

// Use dataTransfer.setData() to set data type and value of dragged data
// When dragging starts, the paragraph will output text and opacity will decrease
document.addEventListener("dragstart", function(event) {
event.dataTransfer.setData("Text", event.target.id);
demo.innerHTML = "Started to drag the p element.";
event.target.style.opacity = "0.4";
});

document.addEventListener("drag", function(event) {
demo.style.color = "red"; // Change color of output text
});

// Output some text when finished dragging the p element and reset the opacity
document.addEventListener("dragend", function(event) {
demo.innerHTML = "Finished dragging the p element.";
event.target.style.opacity = "1";
});


/* Events fired on the drop target */

// When the draggable p element enters the droptarget, change the DIVS's border style
document.addEventListener("dragenter", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "3px dotted red";
}
});

// By default, data/elements cannot be dropped in other elements. To allow a drop, we must prevent the default handling of the element
document.addEventListener("dragover", function(event) {
event.preventDefault();
});

// When the draggable p element leaves the droptarget, reset the DIVS's border style
document.addEventListener("dragleave", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "";
}
});

/* On drop - Prevent the browser default handling of the data (default is open as link on drop)
Reset the color of the output text and DIV's border color
Get the dragged data with the dataTransfer.getData() method
The dragged data is the id of the dragged element ("drag1")
Append the dragged element into the drop element
*/
document.addEventListener("drop", function(event) {
event.preventDefault();
if ( event.target.className == "droptarget" ) {
demo.style.color = "";
event.target.style.border = "";
var data = event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(data));
}
});
.droptarget {
float: left;
width: 100px;
height: 35px;
margin: 15px;
padding: 10px;
border: 1px solid #aaaaaa;
}
<p>Drag the p element back and forth between the two rectangles:</p>

<div class="droptarget">
<p draggable="true" id="dragtarget">Drag me!</p>
</div>

<div class="droptarget"></div>

<p style="clear:both;"><strong>Note:</strong> drag events are not supported in Internet Explorer 8 and earlier versions or Safari 5.1 and earlier versions.</p>

<p id="demo"></p>

关于javascript - javascript中的可拖动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511724/

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