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 translate完美实现表头固定效果
Feb 28 HTML / CSS
用CSS3实现Win8风格的方格导航菜单效果
Apr 10 HTML / CSS
CSS3中background-clip和background-origin的区别示例介绍
Mar 10 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
Jul 10 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
Jul 02 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
Mar 21 HTML / CSS
html5 figure和figcaption的使用方法
Sep 10 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
Aug 23 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
wordpress添加Html5的表单验证required方法小结
Aug 18 HTML / CSS
HTML5页面打开微信小程序功能实现
Sep 23 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
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
PHP中each与list用法分析
2016/01/08 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
js面向对象的写法
2016/02/19 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python实现机器学习之多元线性回归
2018/09/06 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python 实现敏感词过滤的方法
2019/01/21 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
眼镜促销方案
2014/03/15 职场文书
法语专业求职信
2014/07/20 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL