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制作精致的照片墙特效
Jun 07 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
详解CSS3中字体平滑处理和抗锯齿渲染
Mar 29 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
详解css3使用transform出现字体模糊的解决办法
Oct 16 HTML / CSS
html5 CSS过度-webkit-transition使用介绍
Jul 02 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
Sep 03 HTML / CSS
html5 div布局与table布局详解
Nov 16 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
Dec 29 HTML / CSS
Html5新增标签有哪些
Apr 13 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
js实现每日签到功能
2018/11/29 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
详解Python中的array数组模块相关使用
2016/07/05 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
python 实现IP子网计算
2021/02/18 Python
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
电大毕业生自我鉴定
2013/11/10 职场文书
入党自我评价优缺点
2014/01/25 职场文书
士力架广告词
2014/03/20 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
商务司机岗位职责
2015/04/10 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android