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 17 HTML / CSS
CSS3教程(1):什么是CSS3
Apr 02 HTML / CSS
用css3制作纸张效果(外翻卷角)
Feb 01 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 HTML / CSS
CSS3 真的会替代 SCSS 吗
Mar 09 HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
Jan 06 HTML / CSS
如何在Canvas中添加事件的方法示例
May 21 HTML / CSS
canvas 基础之图像处理的使用
Apr 10 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
Apr 23 HTML / CSS
HTML+CSS实现导航条下拉菜单的示例代码
Aug 02 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下常用正则表达式整理
2010/10/26 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
Python3 能振兴 Python的原因分析
2014/11/28 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Python运算符+与+=的方法实例
2021/02/18 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
联强国际笔试题面试题
2013/07/10 面试题
财务学生的职业生涯发展
2014/02/11 职场文书
煤矿安全协议书
2014/08/20 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
MYSQL常用函数介绍
2022/05/05 MySQL
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android