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 16 HTML / CSS
CSS中垂直居中的简单实现方法
Jul 06 HTML / CSS
CSS3 二级导航菜单的制作的示例
Apr 02 HTML / CSS
利用Canvas模仿百度贴吧客户端loading小球的方法示例
Aug 13 HTML / CSS
Html5 localStorage入门教程
Apr 26 HTML / CSS
html5 分层屏幕适配的方法
Mar 16 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
Aug 28 HTML / CSS
简单html5代码获取地理位置
Mar 31 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
Dec 14 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
Dec 28 HTML / CSS
详解HTML5布局和HTML5标签
Oct 26 HTML / CSS
关于html选择框创建占位符的问题
Jun 09 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高级OOP技术演示
2009/08/27 PHP
php操作MongoDB类实例
2015/06/17 PHP
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
让Python代码更快运行的5种方法
2015/06/21 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
python实现KNN分类算法
2019/10/16 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
python 绘制场景热力图的示例
2020/09/23 Python
Python 远程开关机的方法
2020/11/18 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
2015年党风廉政承诺书
2015/01/22 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
员工表扬信怎么写
2015/05/05 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python