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对图片照片进行边缘模糊处理的实现
Aug 08 HTML / CSS
css3中用animation的steps属性制作帧动画
Apr 25 HTML / CSS
自定义html标记替换html5新增元素
Oct 17 HTML / CSS
HTML5 新事件 小结
Jul 16 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
Jun 24 HTML / CSS
html5 音乐播放器 audio 标签使用概述
Jul 15 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
AmazeUI 模态窗口的实现代码
Aug 18 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
Jan 20 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 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入门教程 精简版
2009/12/13 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
优化javascript的执行速度
2010/01/23 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
园林资料员岗位职责
2013/12/30 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2014教师年度工作总结
2014/11/10 职场文书
股东大会通知
2015/04/24 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
使用golang编写一个并发工作队列
2021/05/08 Golang
基于flask实现五子棋小游戏
2021/05/25 Python