Html5实现如何在两个div元素之间拖放图像


Posted in HTML / CSS onMarch 29, 2013

原本效果

Html5实现如何在两个div元素之间拖放图像

拖拽之后效果

Html5实现如何在两个div元素之间拖放图像

代码如下

复制代码
代码如下:

[code]
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1, #div2
{float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script type="text/javascript">
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>
<img src="/i/w3school_logo_black.gif" draggable="true" ondragstart="drag(event)" id="drag1" />
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body>
</html>

[/code]
它看上去也许有些复杂,不过我们可以分别研究拖放事件的不同部分。

设置元素为可拖放

首先,为了使元素可拖动,把 draggable 属性设置为 true :

复制代码
代码如下:

<img draggable="true" />

拖动什么 - ondragstart 和 setData()

然后,规定当元素被拖动时,会发生什么。

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

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

复制代码
代码如下:

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

在这个例子中,数据类型是 "Text",值是可拖动元素的 id ("drag1")。

放到何处 - 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("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。被拖数据是被拖元素的 id ("drag1")把被拖元素追加到放置元素(目标元素)中

HTML / CSS 相关文章推荐
CSS3弹性盒模型开发笔记(一)
Apr 26 HTML / CSS
介绍CSS3使用技巧5个
Apr 02 HTML / CSS
CSS3媒体查询(Media Queries)介绍
Sep 12 HTML / CSS
用CSS3绘制三角形的简单方法
Jul 17 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
使用Canvas操作像素的方法
Jun 14 HTML / CSS
详解如何用canvas画一个微笑的表情
Mar 14 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
Mar 12 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
Aug 22 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
Mar 15 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
Sep 30 HTML / CSS
CSS的class与id常用的命名规则
May 18 HTML / CSS
检测浏览器是否支持html5视频的代码
Mar 28 #HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
Mar 25 #HTML / CSS
HTML5中的Article和Section元素认识及使用
Mar 22 #HTML / CSS
纯html5+css3下拉导航菜单实现代码
Mar 18 #HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 #HTML / CSS
html5的新增的标签和废除的标签简要概述
Feb 20 #HTML / CSS
html5新增的属性和废除的属性简要概述
Feb 20 #HTML / CSS
You might like
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP 已经成熟
2006/12/04 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
深入密码加salt原理的分析
2013/06/06 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python循环语句中else的用法总结
2016/09/11 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
Python模块WSGI使用详解
2018/02/02 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
新学期家长寄语
2014/01/19 职场文书
中国好声音华少广告词
2014/03/17 职场文书
计算机毕业生求职信
2014/06/10 职场文书
新闻传播专业求职信
2014/07/22 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技