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实现表单验证效果(非常不错)
Jan 18 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
Apr 21 HTML / CSS
HTML5中如何显示视频呢 HTML5视频播放demo
Jun 08 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
May 29 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 HTML / CSS
canvas实现圆形进度条动画的示例代码
Dec 26 HTML / CSS
浅谈html5 video 移动端填坑记
Jan 15 HTML / CSS
深入浅析HTML5中的article和section的区别
May 15 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
Dec 23 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
Jul 10 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/12/29 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
python中关于for循环的碎碎念
2017/06/30 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python实现AES加密和解密
2019/03/27 Python
python画环形图的方法
2020/03/25 Python
Python Django搭建网站流程图解
2020/06/13 Python
Python定义一个函数的方法
2020/06/15 Python
怎样比较两个类型为String的字符串
2016/08/17 面试题
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
在职证明范本
2015/06/15 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android