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背景图片的背景裁切、背景透明度、背景变换等效果运用
Dec 24 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
Sep 18 HTML / CSS
css3新单位vw、vh的使用教程
Mar 23 HTML / CSS
html5利用canvas绘画二级树形结构图的示例
Sep 27 HTML / CSS
HTML5之多线程(Web Worker)
Jan 02 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
Jun 12 HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 HTML / CSS
HTML5 textarea高度自适应的两种方案
Apr 08 HTML / CSS
详解HTML5.2版本带来的修改
May 06 HTML / CSS
AmazeUI 缩略图的实现示例
Aug 18 HTML / CSS
CSS3通过var()和calc()函数实现动画特效
Mar 30 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方法调用模式与函数调用模式简例
2011/09/20 PHP
php动态生成函数示例
2014/03/21 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
python 实现波浪滤镜特效
2020/12/02 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
出生公证委托书
2014/04/03 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
大学运动会加油稿
2015/07/22 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Python学习开发之图形用户界面详解
2021/08/23 Python