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实现类似翻书效果的过渡动画的示例代码
Sep 06 HTML / CSS
CSS3实现10种Loading效果
Jul 11 HTML / CSS
用CSS3实现瀑布流布局的示例代码
Nov 10 HTML / CSS
CSS3动画特效在活动页中的应用
Jan 21 HTML / CSS
HTML5的文档结构和新增标签完全解析
Apr 21 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
Nov 18 HTML / CSS
使用phonegap进行提示操作的具体方法
Mar 30 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
Dec 28 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
Aug 28 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
Apr 09 HTML / CSS
Html5踩坑记之mandMobile使用小记
Apr 02 HTML / CSS
使用CSS连接数据库的方式
Feb 28 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下intval()和(int)转换使用与区别
2008/07/18 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
php单链表实现代码分享
2016/07/04 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
JQuery 小练习(实例代码)
2009/08/07 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python中Class类用法实例分析
2015/11/12 Python
儿童编程python入门
2018/05/08 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python中使用while循环的实例
2019/08/05 Python
公务员年总结的自我评价
2013/10/25 职场文书
学校后勤人员职责
2013/12/27 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
公司仓库管理制度
2015/08/04 职场文书
团结主题班会
2015/08/13 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技