首页 > 其他分享 >拖放

拖放

时间:2023-10-18 11:32:49浏览次数:28  
标签:drop dataTransfer 元素 preventDefault ev 拖放

拖放(Drag 和 Drop)是很常见的特性。它指的是您抓取某物并拖入不同的位置。

拖放是 HTML5 标准的组成部分:任何元素都是可拖放的。

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
    ev.preventDefault();
}

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

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

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>


把元素设置为可拖放

首先:为了把一个元素设置为可拖放,请把 draggable 属性设置为 true:


<img draggable="true">

拖放的内容 - ondragstart 和 setData()


然后,规定当元素被拖动时发生的事情。

在上面的例子中,ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据。

dataTransfer.setData() 方法设置被拖动数据的数据类型和值:

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

拖到何处 - ondragover


ondragover 事件规定被拖动的数据能够被放置到何处。

默认地,数据/元素无法被放置到其他元素中。为了实现拖放,我们必须阻止元素的这种默认的处理方式。

这个任务由 ondragover 事件的 event.preventDefault() 方法完成:


event.preventDefault()


进行放置 - ondrop

当放开被拖数据时,会发生 drop 事件。

在上面的例子中,ondrop 属性调用了一个函数,drop(event):

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


  • 调用 preventDefault() 来阻止数据的浏览器默认处理方式(drop 事件的默认行为是以链接形式打开)
  • 通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据
  • 被拖数据是被拖元素的 id ("drag1")
  • 把被拖元素追加到放置元素中





























标签:drop,dataTransfer,元素,preventDefault,ev,拖放
From: https://blog.51cto.com/u_15716707/7915921

相关文章

  • bcb控件拖放
    控件分为两种:有Handle的和无Handle的。一、对于有Handle的控件,如Button,Edit类可以使用如下方法:在控件的MouseMove事件中写入:WORDSC_DragMove=oxF012;ReleaseCapture();((TWinControl*)Sender)->Perform(WM_SYSCOMMAND,SC_DragMove,0);二、对于没有Handle的控件,如Label,Imag......
  • html5之拖放详解
    拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在HTML5中,拖放是标准的一部分,任何元素都能够拖放。InternetExplorer9、Firefox、Opera12、Chrome以及Safari5支持拖放。1.drggable属性如果网页元素的draggable元素为true,这个元素就是可以拖动的。<div draggable......
  • HTML5原生拖拽/拖放 Drag & Drop 详解
    前言拖放(drap&drop)在我们平时的工作中,经常遇到。它表示:抓取对象以后拖放到另一个位置。目前,它是HTML5标准的一部分。我从几个方面学习并实践这个功能。拖放的流程对应的事件我们先看下拖放的流程:选中--->拖动--->释放然后,我们一步步看下这个过程中,会发生的事情。选......
  • Flowise AI:用于构建LLM流的拖放UI
    推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景什么是FlowiseAI?FlowiseAI是一个开源的UI可视化工具,用于帮助开发LangChain应用程序。在我们详细介绍FlowiseAI之前,让我们快速定义LangChain。LangChain是一个框架/python库,可帮助您利用LLM构建自己的自定义NLP......
  • 深入解析React DnD拖拽原理,轻松掌握拖放技巧!
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。。本文作者:霁明一、背景1、业务背景业务中会有一些需要实现拖拽的场景,尤其是偏视觉方向以及移动端较多。拖拽在一定程度上能让交互更加便捷,能......
  • 【VS Code+Qt6】拖放操作
    由于老周的示例代码都是用VSCode+CMake+Qt写的,为了不误导人,在标题中还是加上“VSCode”好一些。上次咱们研究了剪贴板的基本用法,也了解了叫QMimeData的重要类。为啥要强调这个类?因为接下来扯到的拖放操作也是和它有关系。哦,对了,咱们先避开一下主题,关于剪贴板,咱们还要说......
  • 文件拖放
    Useshellapi;procedureTForm1.FormCreate(Sender:TObject);beginDragAcceptFiles(form1.Handle,true);end;procedureTForm1.TFfile(varMsg:TMessage);varbuffer:array[0..1024]ofChar;mouse:TPoint;mouse_in_memo:Boolean;beginGetCursorPos(mou......
  • drag & drop 拖拽与拖放
    相关重点DataTransfer对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer。draggable属性:就是标签元素要设置draggable=true,否则不会有效果,例如:<divtitle="......
  • Blazor 拖放上传文件转换格式并推送到浏览器下载
    前言昨天有个小伙伴发了一个老外java编写的小工具给我,功能是转换西班牙邮局快递Coreeosexpress的单据格式成Amazon格式,他的需求是改一下程序为匹配转换另一个快递公司M......
  • Qt | 拖放、拖动的使用、将文件拖入使用示例
    Qt|拖放、拖动的使用、将文件拖入使用示例1、窗体的拖动Qt的控件本身支持了很强大拖放、拖动功能,对于窗体的拖动,例如QDialog,可以覆写这四个函数:voiddragEnterEvent(QDrag......