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 相关文章推荐
CSS图片翻转动画技术详解(IE也实现了)
Apr 03 HTML / CSS
详解CSS3选择器的使用方法汇总
Nov 24 HTML / CSS
CSS3制作轮播图的一种方法
Nov 11 HTML / CSS
CSS3实现渐变背景兼容问题
May 06 HTML / CSS
HTML5应用之文件上传
Dec 30 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
Jan 31 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 HTML / CSS
HTML5在线预览PDF的示例代码
Sep 14 HTML / CSS
详解如何获取localStorage最大存储大小的方法
May 21 HTML / CSS
HTML中table表格拆分合并(colspan、rowspan)
Apr 07 HTML / CSS
css3实现背景图片颜色修改的多种方式
Apr 13 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/03/13 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
表单内同名元素的控制
2006/11/22 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python查询mysql,返回json的实例
2018/03/26 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Python转换时间的图文方法
2019/07/01 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
python如何编写win程序
2020/06/08 Python
如何卸载python插件
2020/07/08 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
JDO的含义
2012/11/17 面试题
英文求职信结束语大全
2013/10/26 职场文书
妇科医生自荐信
2013/11/05 职场文书
公司财务总监岗位职责
2013/12/14 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
关于幸福的感言
2015/08/03 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
Python matplotlib多个子图绘制整合
2022/04/13 Python