四时宝库

程序员的知识宝库

介绍html中的拖放效果如何实现(html 拖动元素)

拖放是众所周知的最新功能,由于其方便的功能模式,可以在网页中手动提供输入。拖放方法可以描述为用户从源字段中的项目列表中选择特定 data/ 选项,将其拖放到目标字段中的过程。它是使用文档对象模型以及来自 HTML 网页的多个鼠标事件实现的。此功能中使用的各种事件包括拖动、拖动启动、拖动离开、拖动输入、拖动、拖放、拖动结束和拖动退出。

Events for Drag and Drop

最新的拖放 (dnd) 功能中包含多个事件;让我们一一看如下:

序号

事件

描述

1

Drag

在鼠标与要拖动的元素一起移动时拖动实体(元素或文本)。

2

Dragstart

拖放的第一步是dragstart。当用户开始将对象拖动到所需位置时,它会被执行。

3

Dragenter

当鼠标悬停在目标元素上时使用 Dragenter 事件。

4

Dragleave

当用户从元素释放鼠标时,使用此事件。

5

Dragover

当鼠标习惯于在元素上时,会发生此事件.

6

Drop

此事件在拖放过程结束时用于放置元素操作。

7

Dragend

即使在从元素中释放鼠标按钮以完成拖动过程的过程中,这也是最重要的方法之一。

8

Dragexit

此事件状态表明元素不再进入拖动过程的紧急目标选择元素。

让我们看看将发生拖放操作的一些数据属性:

1. dataTransfer.dropEffect [ = value ]: 此属性用于显示当前正在进行的操作。可以将其设置为替换已选择的操作。其中包含的值,如copy, link, none or move.

2. dataTransfer.effectAllowed [ = value ]: 无论允许执行什么操作,都将通过此属性返回。也可以设置为更改已选择的操作.

3. dataTransfer.files: 此数据属性用于获取要拖动的文件的文件列表。

4. dataTransfer.addElement(element):它用于将已经存在的元素插入到其他元素列表中,这些元素可用于呈现拖动反馈.

5. dataTransfer.setDragImage(element, x, y): 此属性与上面略有相同,用于更新拖动反馈并帮助更改已经存在的反馈

6. dataTransfer.clearData ( [ format ] ):它可以帮助用户从已定义的格式中删除数据。如果用户省略了参数,IT 将删除所有数据。

7. dataTransfer.setData(format, data):它是用于添加指定数据的常用属性之一。

8. data = dataTransfer.getData(format): 拖动和拖动操作中的此属性用于提取指定的数据。如果没有与它相同的数据,它将返回到空字符串。

Syntax of Drag and Drop in HTML

以下是定义拖放语法的几个步骤:

选择拖放目标: 设置可拖放

<element draggable="true">

开始拖 :

function dragStart(ev){}

放 :

function dragDrop(ev){}

拖放样例

以下示例将显示拖放操作在 HTML 中的确切执行方式:

样例#1

代码:

<html>
<head>
<title>Drag and Drop Demo</title>
<script>
function allowDrop(ev) {
ev.preventDefault();
}
function dragStart(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function dragDrop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<style>
#box {
margin: auto;
width: 30%;
width: 21%;
height:150px;
border: 2px solid blue;
padding: 2px;
}
#square1, #square2, #square3 {
float: left;
margin: 5px;
padding: 10px;
}
#square1 {
width: 30px;
height: 30px;
background-color: #BEA7CC;
}
#square2 {
width: 60px;
height: 60px;
background-color: #B5D5F5;
}
#square3 {
width: 90px;
height: 90px;
background-color:#F5B5C5 ;
}
h2 {
font-size:20px;
font-weight:bold;
text-align:center;
}
</style>
</head>
<body>
<h2>HTML DRAG AND DROP DEMO</h2>
<div id = "box">
<div id="square1" draggable="true"ondragstart="dragStart(event)"></div>
<div id="square2" draggable="true"ondragstart="dragStart(event)"></div>
<div id="square3" ondrop="dragDrop(event)" ondragover="allowDrop(event)"></div>
</div>
</body>
</html>

效果: 拖放前:

拖放后s :

样例#2

在这里,我们将看到另一个示例,其中我们将图像从一个位置移动到另一个指定位置,如下面的代码所示:


<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
ev.preventDefault();
}
function dragStart(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function dragDrop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<style>
.divfirst {
width: 250px;
height: 150px;
padding: 10px;
border: 1px solid black;
background-color: #F5F5F5;
}
p {
font-size:20px;
font-weight:bold;
}
</style>
</head>
<body>
<p>Image Drag and Drop Demo</p>
<div class="divfirst" ondrop="dragDrop(event)" ondragover="allowDrop(event)">
<img id="drag1"
src="Jerry.jpeg" draggable="true"
ondragstart="dragStart(event)" width="250" height="150"></div>
<br>
<div     class= "divfirst"ondrop="dragDrop(event)"
ondragover="allowDrop(event)"></div>
</body>
</html>

Output: 拖放前 :

拖放后:

样例#3

在此示例中,我们将了解如何将文件拖放到指定位置:


<body>
<div id="filedemo" style="min-height: 150px; border: 1px solid black;"
ondragenter="document.getElementById('output').textContent = ''; event.stopPropagation(); event.preventDefault();"
ondragover="event.stopPropagation(); event.preventDefault();"
ondrop="event.stopPropagation(); event.preventDefault();
dodrop(event);">
DROP FILES HERE...
</div>
<script>
function dodrop(event)
{
var dt = event.dataTransfer;
var files = dt.files;
for (var i = 0; i < files.length; i++) {
output(" File " + i + ":\n(" + (typeof files[i]) + ") : <" + files[i] + " > " +
files[i].name + " " );
}
}
function output(text)
{
document.getElementById("filedemo").textContent += text;
}
</script>
</body>

效果:

总结

HTML 拖放是最重要的用户界面实体之一,将用于复制、删除或录制等不同目的。它适用于不同的事件和属性,如上所列。当您选取某个对象然后将其放在指定位置时,它会执行该操作。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接