利用HTML5实现图片的拖拽

设置元素为可拖放

首先,为了使元素可拖动,把 draggable 属性设置为 true :

<img draggable="true" />

拖动什么 - ondragstart 和 setData()

ondragstart 拖拽开始是触发事件,当元素被拖动时,会发生什么。我们命名一个函数叫drag(),当拖拽事件触发时,我们执行以下函数:

function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
其中:dataTransfer.setData() 方法设置被拖数据的数据类型和值:

在这个例子中,数据类型是 "Text",值是可拖动元素的 id 。

放到何处 - ondragover

ondragover 事件规定在何处放置被拖动的数据。

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

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

event.preventDefault();

进行放置 - ondrop

当放置被拖数据时,会发生 drop 事件。我们定义一个drop函数来执行这个事件;

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")

把被拖元素追加到放置元素(目标元素)中 。

拖拽用到的实例代码如下:

<!DOCTYPE HTML>
<html>
<head>
<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>

<div id="div1" ondrop="drop(event)"
ondragover="allowDrop(event)"></div>
<img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69" />

</body>
</html>

其他方法:
- drag 拖拽中
- dragend 拖拽结束
- dragenter 进入投放区
- dragover 投放区中移动
- dragleave 离开投放区
- dataTransfer 不同投放区之间传递数据

时间: 2024-10-14 14:36:49

利用HTML5实现图片的拖拽的相关文章

Android图片的拖拽与缩放

Android图片的拖拽与缩放 2014年5月9日 我们在使用应用当中经常需要浏览图片,比如在微信当中,点击图片之后可以对图片进行缩放. 本博客介绍如何对图片进行拖拽和缩放,这首先要了解Android中的触摸机制了,在屏幕中有手指按下.手指抬起.手指移动还有多个手指触摸的动作.我们要实现对图片的拖拽和缩放就是要基于这些动作来进行逻辑处理. 图片的拖拽主要是计算手指开始的位置与当前手指的位置关系,来进行平移的,具体可以看代码. 图片的缩放就涉及到计算两点之间的距离来得到缩放比,调用矩阵方法来达到缩

超炫HTML5 SVG聊天框拖拽弹性摇摆动画特效

这是一款很有创意的HTML5 SVG聊天框拖拽弹性摇摆动画特效. 用户能够用鼠标点击或用手滑动聊天框上的指定区域,该区域会以很有弹性的弹簧效果拉开聊天用户列表.点击一个用户头像后.又以同样的弹性特效切换到聊天界面,而且用户头像会移动到聊天界面的右上角.整个动画弹性十足,效果很震撼. 效果演示:http://www.htmleaf.com/Demo/201506031963.html 下载地址:http://www.htmleaf.com/html5/SVG/201506031962.html

Ant Design -- 图片可拖拽效果,图片跟随鼠标移动

Ant Design 图片可拖拽效果,图片跟随鼠标移动,需计算鼠标在图片中与图片左上角的X轴的距离和鼠标在图片中与图片左上角的Y轴的距离. constructor(props) { super(props); this.dragDrop = false; // 图片是否被拖动中 this.apartX = 0; // 鼠标在图片中与图片左上角的X轴的距离 this.apartY = 0; //鼠标在图片中与图片左上角的Y轴的距离 this.state = { value: 1, previewV

js 利用jquery.gridly.js实现拖拽并且排序

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src='javascripts/jquery.js' type='text/javascript'></script> <script src='javascripts/jqu

android 实现图片选择拖拽控件

1.使用RecyclerView 使用RecyclerView可以轻松实现图片切换时的动画过程,这点要好于GridView. 2. 拖拽的实现 Dragmanager 继承View.OnDragListener,对拖拽过程中进行操作, Action_drag_started 获取到操作的Item Action_Drag_location 根据每个停留的位置判断是否交换item的位置. Action_Drag_ended 跟新位置 DragSortAdapter 抽象类,为recyclerView

关于处理禁止图片默认拖拽行为动作

这样子我鼠标移动的时候,没有触发onmousemove事件绑定的函数.操作起来很别扭..后来自己整理了一下..一共有三个办法可以解决这个问题..具体哪个办法更优,现在还不清楚.以后有能力判断优劣的时候再判断吧 1.document.images[i].ondragstart=function (){return false;}; 直接循环页面所有的img标签..然后把它的ondragstart事件return false:这样子就禁止了浏览器图片的默认拖拽动作了.感觉这里要遍历所有IMG标签..

关于Unity中UGUI 图片实现拖拽功能

应用方法:将下面脚本挂载在需要拖拽功能的UI图片上即可 两种拖拽选择:A.中心拖拽(图片中心跟随鼠标位置)m_isPrecision为false: B.精准拖拽(图片被鼠标点击的位置跟随鼠标位置)m_isPrecision为true: 1 /************************************************* 2 * 项目名称:UGUI通用 3 * 脚本创建人:魔卡 4 * 脚本创建时间:2017.12.14 5 * 脚本功能:UI图片拖拽功能(将脚本挂载在需要拖放

利用jQuery-UI和jsPlumb实现拖拽连接模型

简介 之前公司需要做一个自定义数据搜索模型的功能,大体是这样的:左边显示的每一个模型对应于数据库中的一个表,把左边的模型拉入右边的容器内,会显示这个模型(也就是表)下的列信息,然后通过连线确定各独立的模型之间的关系(对应于数据库中的多表链接查询),然后保存数据到后台执行.由于保存模型就是对容器中的模型的一个解析,这里就不做展示了,这个demo主要处理模型的展示以及如何链接. 话不多说,先上图:  需要用到的东西 这个功能主要用到的是jQuery UI的拖拽功能以及jsPlumb连线插件. jsP

H5图片异步拖拽上传

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #div1{width: 200px; height: 200px; background: red; margin: 50px;} </style> <script src=&qu