📜  电子可拖动 - Html (1)

📅  最后修改于: 2023-12-03 15:11:20.540000             🧑  作者: Mango

电子可拖动 - HTML

HTML 是一种标记语言,可用于创建网页。HTML 的拖动功能允许您通过拖动对象来交互,例如图片或文本。在本文中,我们将学习如何在 HTML 中创建可拖动元素以及如何在页面中拖动和放置这些元素。

创建可拖动元素

要创建可拖动元素,我们需要使用 HTML5 的拖放 API。我们需要在可拖动元素上设置一些属性和事件处理程序。

以下是一个简单的示例,其中我们创建了一个可拖动的 div 元素:

<div draggable="true" ondragstart="drag(event)">可拖动元素</div>
  • draggable 属性用于指定元素是否可拖动。它可以设置为 truefalse

  • ondragstart 事件处理程序在拖动开始时触发。在我们的示例中,它调用 drag 函数。

接下来,我们需要创建 drag 函数。这个函数将在拖动开始时执行,并将一些数据存储在 drag event 的数据传输属性中:

<script>
function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}
</script>
  • setData 方法将数据存储在 dataTransfer 属性中。在我们的示例中,它存储了目标元素的 id。

现在我们已经创建了一个可拖动元素,我们需要将它放置在页面上。我们需要在放置位置上设置一些属性和事件处理程序。

以下是一个示例,其中我们创建了一个可放置的 div 元素:

<div ondrop="drop(event)" ondragover="allowDrop(event)">放置元素</div>
  • ondrop 事件处理程序在拖放元素放置在放置元素上时触发。在我们的示例中,它调用 drop 函数。

  • ondragover 事件处理程序在拖动元素悬停在放置元素上时触发。在我们的示例中,它调用 allowDrop 函数。

下一步,我们需要创建 allowDropdrop 函数。这些函数将在拖放元素悬停在放置元素上和放置元素时执行:

<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
  • allowDrop 函数通过调用 preventDefault 方法禁用默认的放置行为。

  • drop 函数从 dataTransfer 属性中检索存储的数据,并将其附加到目标元素。

结论

通过使用 HTML5 的拖放 API,我们可以轻松创建可拖动元素和可放置元素,并允许用户通过交互来操纵它们。以上是一个简单的示例,你可以根据你的需求进行调整和扩展。

完整代码可以参考下面的代码段:

<div draggable="true" ondragstart="drag(event)" id="drag1">可拖动元素</div>

<div ondrop="drop(event)" ondragover="allowDrop(event)">
  放置元素
</div>

<script>
function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function allowDrop(ev) {
  ev.preventDefault();
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>