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 相关文章推荐
分享8款纯CSS3实现的搜索框功能
Sep 14 HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
css3制作动态进度条以及附加jQuery百分比数字显示
Dec 13 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
Jun 23 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 HTML / CSS
HTML5 实现一个访问本地文件的实例
Dec 13 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 HTML / CSS
使用html5 canvas 画时钟代码实例分享
Nov 11 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
Oct 23 HTML / CSS
详解webapp页面滚动卡顿的解决办法
Dec 26 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
Aug 20 HTML / CSS
css背景和边框标签实例详解
May 21 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网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
对联广告js flash激活
2006/10/19 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
SQL Server面试题
2013/04/04 面试题
行政助理的职责
2013/11/14 职场文书
招商业务员岗位职责
2013/12/16 职场文书
六一亲子活动总结
2014/07/01 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
pytorch 如何使用float64训练
2021/05/24 Python