【HTML】HTML5的拖放你用了吗

2023-11-20

【HTML】HTML5的拖放你用了吗

引言

github:【HTML】HTML5的拖放你用了吗

内容速递:看了本文您能了解到的知识!

HTML5拖拽

在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

拖放的操作,多用在拖拽排序列表、游戏拼图等。

下文中出现拖放拖拽表达同一个意思。

1、官方介绍

HTML 拖放(Drag and Drop)接口使应用程序能够在浏览器中使用拖放功能。例如,用户可使用鼠标选择可拖拽(draggable)元素,将元素拖拽到可放置(droppable)元素,并释放鼠标按钮以放置这些元素。

拖拽操作期间,会有一个可拖拽元素的半透明快照跟随着鼠标指针。

2、文档

可以查看拖放的一些API,包含了相关接口的说明、在应用程序中加入拖放支持的基本步骤,以及相关接口的使用简介。

文档地址:官方文档

3、拖拽事件

主要有八个主要的事件,完成拖拽着歌过程一系列的事件响应。

事件 事件函数 触发时刻
drag ondrag 当拖拽元素或选中的文本时触发。
dragend ondragend 当拖拽操作结束时触发 (比如松开鼠标按键或敲“Esc”键).。
dragenter ondragenter 当拖拽元素或选中的文本到一个可释放目标时触发。
dragexit ondragexit 当元素变得不再是拖拽操作的选中目标时触发。
dragleave ondragleave 当拖拽元素或选中的文本离开一个可释放目标时触发。
dragover ondragover 当元素或选中的文本被拖到一个可释放目标上时触发(每100毫秒触发一次)。
dragstart ondragstart 当用户开始拖拽一个元素或选中的文本时触发。
drop ondrop 当元素或选中的文本在可释放目标上被释放时触发。

4、拖拽核心

4.1、什么是可拖拽的?

有同学问了,上面不是说任何元素都能够拖放吗?为啥我平时拖不动?

那平时拖动了,就不叫功能了,叫BUG!

为了使元素可拖动,需要把 draggable 属性设置为 true

<div draggable="true"></div>

4.2、拖起

通过ondragstart 事件,调用dataTransfer.setData() 方法设置被拖数据的数据类型和值。

<script>
  window.addEventListener('DOMContentLoaded', () => {
    const element = document.getElementById("p1");
    element.addEventListener("dragstart", (ev) => {
      ev.dataTransfer.setData("text/plain", ev.target.id);
    });
  });
</script>

<p id="p1" draggable="true">This element is draggable.</p>

4.3、拖拽数据

应用程序可以在拖拽操作中包含任意数量的数据项。每个数据项都是一个 string类型,典型的 MIME 类型,如:text/html

function dragstart_handler(ev) {
  // 添加拖拽数据
  ev.dataTransfer.setData("text/plain", ev.target.innerText);
  ev.dataTransfer.setData("text/html", ev.target.outerHTML);
  ev.dataTransfer.setData("text/uri-list", ev.target.ownerDocument.location.href);
}

想了解更多的xdm,可以查看 推荐拖拽类型 (en-US) 了解可拖拽的常见数据类型(如文本、HTML、链接和文件)。

4.4、拖拽图像

拖拽过程中,浏览器会在鼠标旁显示一张默认图片。

通过 setDragImage()方法自定义一张图片。

function dragstart_handler(ev) {
  var img = new Image();
  img.src = 'example.gif';
  ev.dataTransfer.setDragImage(img, 10, 10);
}

当然如果需要图片的样式,可以使用基本的拖拽数据类型。

4.5、拖拽效果

在拖拽的过程中,或者鼠标停留在元素上时的反馈有 3 个效果可以定义:

  1. copy 表明被拖拽的数据将从它原本的位置拷贝到目标的位置。
  2. move 表明被拖拽的数据将被移动。
  3. link 表明在拖拽源位置和目标位置之间将会创建一些关系表格或是连接。

通过dropEffect来设置

function dragstart_handler(ev) {
  ev.dataTransfer.dropEffect = "copy";
}

4.6、放置

当拖拽一个项目到 HTML 元素中时,浏览器默认不会有任何响应。

有拖起那么必有放置,除非你犟!不松下鼠标!

这里需要借助ondrop和ondragover两个事件来完成!dataTransfer.getData()来设置新的数据。

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

<p id="target" ondrop="drop_handler(event)" ondragover="dragover_handler(event)">Drop Zone</p>

5、一个拖拽案例

一个互相拖放的案例,可以从A->B,B->A。

思路:之前实现单方面的拖拽,是一个拖,一个放。那么这两者彼此都这样设置一番呢,岂不是可以实现互相的拖放?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>drag</title>
<style type="text/css">
#div1, #div2 {
	float:left; 
	width:200px; 
	height:80px; 
	margin:10px;
	border:1px solid #aaaaaa;
}
</style>
<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)">
	<img src="https://img0.baidu.com/it/u=1047123058,3465364298&fm=253&fmt=auto&app=138&f=JPEG?w=720&h=405" draggable="true" ondragstart="drag(event)" id="drag1" width="200" height="80">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

</body>
</html>

效果

image-20220222180034593

6、一个好用的拖拽插件

既然是学习拖拽的,那么推荐一个比较好用的Vue的拖拽组件,vue.draggable,它的官网地址:Github地址

image-20220222180336664

里面也有其作者写的一个js公用版的。

也把中文文档地址贴一下吧,希望对你学习拖拽有帮助。中文文档地址

7、总结

写那么多,总感觉意犹未尽!

差一个拖拽的小游戏案例?(等待安排,时间紧急,需要排期!!!)

重构前端知识体系,你要一起吗?

博客说明与致谢

文章所涉及的部分资料来自互联网整理,其中包含自己个人的总结和看法,分享的目的在于共建社区和巩固自己。

引用的资料如有侵权,请联系本人删除!

感谢万能的网络,W3C,菜鸟教程等!

感谢勤劳的自己个人博客GitHub学习GitHub

公众号【归子莫】,小程序【子莫说】

如果你感觉对你有帮助的话,不妨给我点赞鼓励一下,好文记得收藏哟!关注我一起成长!

幸好我在,感谢你来!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【HTML】HTML5的拖放你用了吗 的相关文章

  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad
  • Raphaël.js 中的剪辑路径

    我怎样才能像这样将 Clip path 与 Rapha l js 一起使用example http www simplesystems org RMagick doc ex clip path gif 看来 Raphael js 中只有 C
  • 使用jquery和javascript水平滑动div

    我正在尝试在 关于我们 页面中显示我的推荐 我在那里用 3divs水平样式可同时显示 3 个推荐 这里我想做的是我想添加一些滑动效果与查询消失 1st 3divs然后需要加载2nd 3divs与不同的推荐 等等 我做了HTML和CSS 但不
  • Android WebView视频关闭全屏视图后,webview自动滚动

    我在用WebView显示包含文本和视频内容的网页 它按预期正确加载和显示视频 但是当我进入视频的全屏视图时 我按照给定的方式实现了全屏视频视图here https github com akhgupta WebviewVideo 然后回到W
  • CKEditor 禁用自动编辑 HTML 代码

    我需要在我的 CREditor 之一中禁用自动编辑代码 如果我将此代码作为 HTML 放置 div class kontaktJeden div class obr img src images insol png alt div div
  • Javascript代码可以在jsfiddle中运行,但不能在浏览器中运行[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试搜索类似的问题 但无法找到我的代码在 jfiddle 中工作但在浏览器中不起作用的原因 我还尝试将我的代码从 jfiddle
  • 水平居中包含浮动 li 元素的

    我一直在尝试制作一个带有悬停下拉菜单的水平导航栏 我已经让它工作了 但是为了让 中的所有元素并排 水平 它们必须应用 float left 有什么办法让他们回到中心吗 另外 我的 CSS 编码风格 正确吗 我觉得我做错了 谢谢 HTML d
  • 使用 webkit 转换 Html 到 PDF

    从 Html 生成 PDF 时 webkit 转换不起作用 我需要将 div 旋转 45 度 使用 webkit 变换后 它在屏幕上看起来没问题 但使用 winnovatives Html 到 PDF 转换器时 输出是平坦的而不是旋转的 有
  • 将 HTML 转换为 Excel 的最佳方法是什么

    我有一个 HTML 页面 其中包含 Flash 图表 FusionCharts 和 HTML 表格 我需要将这整个事情转换成Excel HTML 表格应显示在 Excel 工作表的单元格中 Flash 图表可以显示为图像 我们可以使用任何开
  • DIV 内的右对齐按钮

    作为一名后端开发人员 我感觉更舒服 但我有一个样式问题困扰着我 我已经发布了我的场景示例here http jsfiddle net jDaM8 1 我正在创建一个 div 它根据单击按钮显示 隐藏以显示特定项目的详细信息 该部分工作正常
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • 隐藏滚动条,但仍然可以滚动

    我希望能够滚动整个页面 但不显示滚动条 在谷歌浏览器中它是 webkit scrollbar display none 但 Mozilla Firefox 和 Internet Explorer 似乎不是这样工作的 我也在 CSS 中尝试过
  • 如何使 CSS 样式覆盖 JavaScript 应用的样式

    我动态创建一个 HTML 表 并应用一些样式 var tbl document createElement table tbl id CrewMemberTable document getElementById CrewMemberPan
  • Bootstrap 的跨浏览器数字微调器/步进器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个与 Twitter Bootstrap 2 3 集成的数字微调器 使用 HTML5input type number
  • 为什么 JDOM 的 getChild() 方法返回 null?

    我正在做一个关于 html 文档操作的项目 我想要现有 html 文档中的正文内容将其修改为新的 html 现在我正在使用 JDOM 我想在我的编码中使用 body 元素 为此 我在编码中使用了 getChild body 但它向我的程序返

随机推荐

  • 性能测试之Jmeter集合点

    01 计数器 计数器就是按照设置可以为每个用户迭代时进行计数 可以用作参数化 jmeter计数器设置 没勾选与每用户独立跟踪计数时 计数器每用户每迭代都会往上增加数字 到最大时可重新开始 勾选与每用户独立跟踪计数器时 每个线程也就是用户会单
  • 毕业设计-基于机器视觉的数字图像处理技术研究-OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 基于OpenCV数据库的程序环境构建 二 基于OpenCV的图像技术处理 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕
  • CentOS Linux服务器安全设置

    转自 http www osyunwei com archives 754 html 引言 我们必须明白 最小的权限 最少的服务 最大的安全 所以 无论是配置任何服务器 我们都必须把不用的服务关闭 把系统权限设置到最小话 这样才能保证服务器
  • 华为OD机试 - 最佳植树距离(Java)

    题目描述 按照环保公司要求 小明需要在沙化严重的地区进行植树防沙工作 初步目标是种植一条直线的树带 由于有些区域目前不适合种植树木 所以只能在一些可以种植的点来种植树木 在树苗有限的情况下 要达到最佳效果 就要尽量散开种植 不同树苗之间的最
  • Pandas基础知识入门

    Pandas是基于Numpy构建的含有更高级数据结构和工具的数据分析包 类似于Numpy的核心是ndarray pandas 也是围绕着 Series 和 DataFrame两个核心数据结构展开的 Series 和 DataFrame 分别
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • c语言指针入门

    1 指针是什么 1 概念 指针是一种十分重要的数据类型 利用指针变量可以直接对内存中各种不同数据结构的数据进行 快速处理 2 指针与内存的关系 指针与内存有着密切的联系 为了正确理解指针的概念 必须弄清楚计算机系统中数 据存储和读取的方式
  • OSI与TCP/IP协议

    OSI七层模型 OSI7层模型分别是 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 数据的封装与解封装过程 OSI模型vsTCP IP模型 TCP IP协议族的组成 每层常见的协议 应用层的协议 HTTP协议 HTTPS协议
  • 【ML&DL】【skimming】Global Optimality in Neural Network Training

    补了一下2017年的CVPR Global Optimality in Neural Network Training 1 论文一览 痛点 深度学习取得了很大的成功 但是对其成功原因的数学解释却还是一个难点 很大一个原因是对深度网络的参数学
  • 读《洞穴奇案》——一个人是否应该为了避免偷窃面包而挨饿致死?

    之前在功利主义与法的精神一文中提到过正当防卫 在读了今天的内容后 我觉得有必要对正当防卫的内在精神做一个深入探讨 书中说到判断是否是正当防卫 需要去判断一个人在进行自我防卫的时候是否是故意的 我认为 对这个故意的解读 是判断正当防卫的关键
  • SM2加解密、签名验签

    导论 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 在我们国家商用密码体系中被用来替换RSA算法 国产SM2算法 是基于ECC的 但二者在签名验签 加密解密过程中或许有些许区别 目前鄙人还不太清楚 后期有机会的话
  • linux:http服务器搭建及实验案例

    目录 准备工作 http服务器各个配置文件大概说明 实验1 访问不同ip获得不同网页 实验2 同一ip访问不同端口获得不同网页 准备工作 1 安装http服务 2 将 etc selinux config 文件下面的 SELINUX值改为
  • 设备虚拟化基础 - PCI

    目录 1 配置空间概念和作用 2 通过配置空间发现设备 3 Linux读取PCI配置空间接口 4 内核中具体读取配置空间实例 5 Virtion设备自定义空间 6 Linux读取Capabilities List代码解析 1 配置空间概念和
  • 【解决方案】“/usr/bin/nvcc“ is not able to compile a simple test program解决方案

    问题描述 CMake Error at usr share cmake 3 16 Modules CMakeTestCUDACompiler cmake 46 message The CUDA compiler usr bin nvcc i
  • 深入理解Android之AOP

    深入理解Android之AOP 格式更加精美的PDF版请到 http vdisk weibo com s z68f8l0xTgCLK 下载 一 闲谈AOP 大家都知道OOP 即ObjectOriented Programming 面向对象编
  • OpenGL 创建OpenGL上下文(OpenGL Context WGL)

    文章目录 OpenGL Context 窗口 Pixel Format 创建上下文 Create Context MakeCurrent 删除上下文 Delete Context 如何正确创建Context 创建一个假的Context 获取
  • 2023华为OD机试真题【双指针/优雅子数组】

    题目内容 如果一个数组中出现次数最多的元素出现大于等于K次 被称为K 优雅数组 k也可以被称为优雅阈值 例如 数组1 2 3 1 2 3 1 它是一个3 优雅数组 因为元素1出现次数大于等于3次 数组1 2 3 1 2就不是一个3 优雅数组
  • 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾 一次他想挑战K大师 不料K大师说 我们先来玩个空格填字母的游戏 要是你不能赢我 就再别玩LOL了 K大师在纸上画了一行n个格子 要小明和他交替往其中填入字母 并且 1 轮到某人填的时候 只能在某个空格中填入L或
  • 寻找3的幂

    目录 题目 题目接口 题目思路 第一点 第二点 第三点 代码实现 普通版本 提交 递归版本 提交 结语 题目 在ledcode刷题网站上 有这样一道题 寻找3的幂 题目接口 bool isPowerOfThree int n 题目思路 第一
  • 【HTML】HTML5的拖放你用了吗

    HTML HTML5的拖放你用了吗 引言 github HTML HTML5的拖放你用了吗 内容速递 看了本文您能了解到的知识 在 HTML5 中 拖放是标准的一部分 任何元素都能够拖放 拖放的操作 多用在拖拽排序列表 游戏拼图等 下文中出