【HTML5】拖放详解及实现案例

文章目录

    • 效果预览
    • 代码实现

效果预览

在这里插入图片描述

代码实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>一颗不甘坠落的流星</title>
		<style>
			#div1,
			#div2 {
				float: left;
				width: 100px;
				height: 27px;
				margin: 10px;
				padding: 24px 0;
				text-align: center;
				border: 1px solid #aaaaaa;
			}
				
			span {
				display: inline-block;
				width: 50px;
				height: 25px;
				background-color: greenyellow;
			}
		</style>
	</head>
	<body>
		<!-- 4. ondragover 事件规定被拖动的数据能够被放置到何处。 -->
		<!-- 6. 当放开被拖数据时,会发生 drop 事件。 -->
		<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
			<!-- 1. 为了把一个元素设置为可拖放,请把 draggable 属性设置为 true -->
			<!-- 2. ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据。 -->
			<span draggable="true" ondragstart="drag(event)" id="drag1"></span>
		</div>
		<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

	</body>
	<script type="text/javascript">
		function allowDrop(ev) {
			// 5. 默认地,数据/元素无法被放置到其他元素中。
			// 为了实现拖放,我们必须阻止元素的这种默认的处理方式。
			// 由 ondragover 事件的 event.preventDefault() 方法完成
			ev.preventDefault();
		}

		function drag(ev) {
			// 3. dataTransfer.setData() 方法设置被拖动数据的数据类型和值
			// 在本例中,数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。
			ev.dataTransfer.setData("Text", ev.target.id);
		}

		function drop(ev) {
			// 调用 preventDefault() 来阻止数据的浏览器默认处理方式(drop 事件的默认行为是以链接形式打开)
			ev.preventDefault();
			通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据
			var data = ev.dataTransfer.getData("Text");
			// 被拖数据是被拖元素的 id ("drag1")
			var span = document.getElementById(data)
			// 把被拖元素追加到放置元素中
			ev.target.appendChild(span);
		}
	</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/45329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能测试Ⅱ(压力测试与负载测试详解)

协议 性能理论&#xff1a;并发编程 &#xff0c;系统调度&#xff0c;调度算法 监控 压力测试与负载测试的区别是什么&#xff1f; 负载测试 在被测系统上持续不断的增加压力&#xff0c;直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前实时帧率(C++)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来计算相机的实时帧率&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的帧率的技术背景Baumer工业相机的帧率获取方式CameraExplorer如何查看相机帧率信息在BGAPI SDK里通过函数获取相机帧率 Baumer工业相机通过BGAP…

成都爱尔蔡裕:泡在“糖”里的脆弱血管,暴露在眼睛深处

糖尿病是一组由多病因引起的以慢性高血糖为特征的终身性代谢性疾病。长期血糖增高&#xff0c;大血管、微血管受损并危及心、脑、肾、周围神经、眼睛、足等。医生临床数据显示&#xff0c;糖尿病发病后10年左右&#xff0c;将有30%&#xff5e;40%的患者至少会发生一种并发症&a…

Spring使用注解进行对象装配(DI)

通过五大类注解可以更便捷的将对象存储到 Spring 中&#xff0c;同样也可以使用注解将已经储存的对象取出来&#xff0c;直接赋值到注解所在类的一个属性中&#xff0c;这一个过程也叫做对象的装配或者叫对象的注入&#xff0c;即 DI。 一. 什么是对象装配 获取 Bean 对象也叫…

【算法基础:搜索与图论】3.6 二分图(染色法判定二分图匈牙利算法)

文章目录 二分图介绍染色法判定二分图例题&#xff1a;860. 染色法判定二分图 匈牙利匹配二分图最大匹配匈牙利匹配算法思想例题&#xff1a;861. 二分图的最大匹配 二分图介绍 https://oi-wiki.org/graph/bi-graph/ 二分图是图论中的一个概念&#xff0c;它的所有节点可以被…

如何模拟实现分布式文件存储

如何解决海量数据存不下的问题 传统做法是是在宕机存储。但随着数据变多&#xff0c;会遇到存储瓶颈 单机纵向扩展&#xff1a;内存不够加内存&#xff0c;磁盘不够家磁盘。有上限限制&#xff0c;不能无限制加下去 多机横向扩展&#xff1a;采用多台机器存储&#xff0c;一…

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案&#xff1a; 1、查询商品库存等于50的所有商品&#xff0c;显示商品编号&#xff0c;商 品名称&#xff0c;商品售价&#xff0c;商品库存。 SQL语句 select good_no,good…

贪心算法重点内容

贪心算法重点内容 4.1部分背包 按照单位重量的价值排序 4.2最小生成树 两种算法 4.3单源最短路径 4.4哈夫曼树

深入学习java虚拟机||JVM内存结构五大模型

目录 程序计数器 栈 虚拟机栈 垃圾回收是否涉及栈内存&#xff1f; 栈内存分配越大越好吗&#xff1f; 方法内的局部变量是否线程安全&#xff1f; 栈内存溢出 本地方法栈 堆 方法区 先看内存图总览 程序计数器 定义&#xff1a;全称P r o g r a m C o u n t e r R e …

Pytorch个人学习记录总结 06

目录 神经网络-卷积层 torch.nn.Conv2d 神经网络-最大池化的使用 torch.nn.MaxPool2d 神经网络-卷积层 torch.nn.Conv2d torch.nn.Conv2d的官方文档地址 CLASS torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue,…

探秘MySQL底层架构:设计与实现流 程一览

点赞还是要求一下的&#xff0c;万一屏幕前的大漂亮&#xff0c;还有大帅哥就点赞了呢&#xff01;&#xff01;&#xff01;&#xff01; Author: 源码时代 Raymon老师 说在前头 Mysql&#xff0c;作为一款优秀而广泛使用的数据库管理系统&#xff0c;对于众多Java工程师来…

发布npm包流程

发布npm包的步骤如下&#xff1a; 在终端中通过 npm init 命令创建一个新的npm包&#xff0c;按照提示填写包的信息&#xff0c;如包名称、版本、描述、作者、许可证等。 在包的根目录下创建一个 index.js 文件&#xff0c;编写你的代码。 确认你已经注册了npm账号&#xff0…

自动驾驶感知系统-超声波雷达

超声波雷达&#xff0c;是通过发射并接收40kHz的超声波&#xff0c;根据时间差算出障碍物距离。其测距精度是1~3cm.常见的超声波雷达有两种&#xff1a;第一种是安装在汽车前后保险杠上的&#xff0c;用于测量汽车前后障碍物的驻车雷达或倒车雷达&#xff0c;称为超声波驻车辅助…

re学习(25)i春秋-re-basebasebase(base64+函数构造)

参考文章&#xff1a;re学习笔记&#xff08;22&#xff09;爱春秋CTF答题夺旗赛&#xff08;第四季&#xff09;-re-basebasebase_ctfbase~base_Forgo7ten的博客-CSDN博 总结&#xff1a;1.flag——→base64加密&#xff08;自定义&#xff09;——→与3异或——→加密后数据…

刘铁猛C#语言教程——语句1

语句的定义 以下是对该文档的翻译 一条语句对应着一条汇编语言指令或者一条语句对应着一系列有着内在逻辑关联的汇编指令&#xff0c;对于这句话的理解&#xff0c;我们可以观察C#编译器编译的C#程序后得到的汇编语言代码&#xff0c;这样便可以看到语句与指令的关系&#xff…

在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错

文章目录 一、Vue.js devtools开发者工具安装1.打开谷歌浏览器——点击扩展程序——选择管理扩展程序2.先下载添加一个谷歌助手到扩展程序中&#xff08;根据提示进行永久激活&#xff09;3.点击谷歌浏览器的应用商店4.输入Vue.js devtools——搜索——选择下载 二、解决Vue.js…

【玩转Linux】标准IO函数

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

华为数通HCIP-OSPF路由计算

路由协议 作用&#xff1a;用于路由设备学习非直连路由&#xff1b; 动态路由协议&#xff1a;使路由设备自动学习到非直连路由&#xff1b; 分类&#xff1a; 按照算法分类&#xff1a; 1、距离矢量路由协议&#xff1b;&#xff08;RIP、BGP&#xff09; 只交互路由信息…

什么是Redis?

什么是Redis 什么是Redis一、特性1. 支持多种数据结构2. 读/写速度快&#xff0c;性能高。3. 支持持久化。4. 实现高可用主从复制&#xff0c;主节点做数据副本。5. 实现分布式集群和高可用。 二、基本数据类型string&#xff08;字符串&#xff09;list(双向链表)set(集合)zse…

PostgreSQL数据库动态共享内存管理器——Dynamic shared memory areas

dsm.c提供的功能允许创建后端进程间共享的共享内存段。DSA利用多个DSM段提供共享内存heap&#xff1b;DSA可以利用已经存在的共享内存&#xff08;DSM段&#xff09;也可以创建额外的DSM段。和系统heap使用指针不同的是&#xff0c;DSA提供伪指针&#xff0c;可以转换为backend…