Html5实现如何在两个div元素之间拖放图像

2016-02-19 11:19 55 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享Html5实现如何在两个div元素之间拖放图像,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

原本效果

拖拽之后效果

代码如下

代码如下:

[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 事件规定在何处放置被拖动的数据。

默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

这要通过调用 ondragover 事件的 event.preventDefault() 方法:

代码如下:

event.preventDefault()

进行放置 - ondrop

当放置被拖数据时,会发生 drop 事件。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

在上面的例子中,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")把被拖元素追加到放置元素(目标元素)中

来源:http://www.tulaoshi.com/n/20160219/1597086.html

延伸阅读
标签: Web开发
WebRTC可能是明年最受关注的HTML5标准了,Mozilla为此开发了一套帮助你控制硬件的API,例如,摄像头,麦克风,或者是加速表。你可以不依赖其它的插件来调用你需要的本机硬件设备。 在今天的这篇文章中,我们将介绍来自Wolfram Hempel开发的Photobooth.js,使用这个类库可以帮助你快速的调用摄像头功能,你可以很容易的添加摄像头功能到网站...
标签: Web开发
在前面的几篇文章里,我向大家共享了几个HTML5的例子,分别是拖拽功能演示,页面内容可编辑化演示 和 本地存储功能演示。 今天,我将向大家分享一个简单的应用,用来演示使用FileReader的方法, FileReader是HTML5里提供的一个文件操作API。 当你在看我前面所写的HTML 5例子时,我正在思考创建一个简单但又适用的例子、以一种更新奇的方式来演...
《模拟城市5》两个城市之间的连接方法 两个城市之间的连接方法: 城市详细上有具体标注水路和铁路。 铁路链接按实际连接的城市为主。 水路有河流分区,不同区的也不通。 只有飞机场是全区域联通的。 阅读延伸: 《模拟城市5》2.0补丁将至 仍然无法离线 《模拟城市5》被破解 盗版体验竟优于正版 《模拟城市5》新版PC最低配置需求...
标签: Web开发
今天,大多数视频是通过插件(比如 Flash)来显示的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了一种通过 video 元素来包含视频的标准方法。 在HTML5中,video元素目前支持三种格式的视频文件, 1.Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件 2.MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件 3.Web...
标签: Web开发
复制代码代码如下: !DOCTYPE HTML html head meta charset="UTF-8" style type="text/css" canvas{position:absolute;top:0px;left:0px;} /style title时钟/title /head body canvas id="canvas" width="200" height="200"/canvas canvas id="p_canvas" width="200" height="200"/canvas script type="text/javascript" //获取绘图对...

经验教程

99

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部