HTML5之画布的拖拽/拖放

<!DOCTYPE HTML>

<html>

<head>

<script type="text/javascript">

function allowDrop(ev){

ev.preventDeafault();

}

function drag(ev){

ev.dataTranster.setData("Text",ev.target.id);

}

function drop(ev){

 var data=ev.dataTransfer.getData("Text");

ev.target.appendChild(document.getElementById(data));

ev.preventDefault();

}

</script>

</head>

<body>

<div id ="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)"></div>

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

</body>

</html>


使得一个元素可以拖动

非常简单,只需要将一个元素的拖动属性修改为draggable,如下:

 
 
  1. <img draggable="true" />

如何拖动 - ondragstart() 和 setData()方法

然后,我们指定当一个元素拖动的时候会执行的操作。

在上面的演示中,ondragstart属性调用了一个方法, drag(event),这里指定了那个数据被拖动。

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

 
 
  1. function drag(ev){
  2. ev.dataTransfer.setData("Text",ev.target.id);
  3. }

在这里例子中,data type是"Text",数值是被拖动元素的ID。

哪里去放置(drop) - ondragover

ondragover事件指定了拖动的元素可以被放置的位置。

缺省,数据/元素不能被drop到另外的元素。 为了允许drop,你需要先阻止缺省的处理方式。我们可以调用event.preventDefault()方法,如下:

 
 
  1. event.preventDefault()

执行放置(drop)

当可拖动的数据被drop的时候,drop事件触发。

在上面的例子中,ondrop属性可以调用一个方法,drop(event):

 
 
  1. function drop(ev)
  2. {
  3. var data=ev.dataTransfer.getData("Text");
  4. ev.target.appendChild(document.getElementById(data));
  5. ev.preventDefault();
  6. }

以上代码:

  • 使用dataTransfer.getData("Text")得到被拖动的数据。这个方法将会返回setData()方法中设置的任何数据。 
  • 被拖动的数据是可以拖动元素("drag1")的id
  • 添加可拖动的元素到放置的元素
  • 调用preventDefault()方法来阻止浏览器的缺省数据处理方式(例如,打开链接)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个关于html5的技术讲解文档,主要目录如下: 第1章 主要结构  [head]  使用新的html 5结构化元素  使用css样式化html 5  何时使用新的html 5结构化元素  小结 第2章 文本  构造主要内容区域  添加博客帖子和评论  使用html 5大纲  理解wai-aria  更多新结构  重新定义的元素  全局属性  本书中没有介绍的功能  小结 第3章 表单  我们爱html,现在它反过来爱我们了  新的输入类型  新的属性  综合应用  对遗留浏览器的向后兼容  样式化新表单字段和错误消息  覆盖浏览器默认  使用 diy验证  避免验证  小结 第4章 视频和音频  本地多媒体:为什么、是什么、如何做  编码解码器  滚动定制控件  多媒体可访问性  小结 第5章 画布  画布基础  绘制路径  使用变换:伪装的像素  捕获图像  推送像素  对画布绘制实现动画  小结 第6章 数据存储  存储选项  web存储  web sql数据库  小结 第7章 离线  拔掉插件:离线进行  缓存清单  如何提供清单  浏览器-服务器过程  applicationcache  使用清单来检测连接性  清除缓存  小结 第8章   深入动  动数据的互操作性  如何动任意元素  添加定制的动图标  可访问性  小结 第9章 geolocation  为访问者标记一个别针  api方法  抓住你:成功处理程序  它到底如何工作:这是魔术  小结 第10章 messages、worker和socket  用messaging api实现聊天  使用web workers来线程化  web sockets:使用流数据  小结  结语

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值