当前位置:首页 > 技术知识 > 正文内容

JavaScript图片或者div拖动拖动函数的实现

maynowei7个月前 (09-11)技术知识96

/*

* 拖动图片封装

html格式:<img lay-src="${item.Resourcesurl}" alt="${item.ResourcesName}" style="position: absolute;" onmousemove="drag(this)" >

*/

function drag(obj) {


/*实现div的拖拽功能

* 实现拖拽功能的思路

* 首先需要鼠标按下之后 onmousedown()

* div会跟随鼠标进行移动 onmousemove()

* 在鼠标松开之后,div会立刻固定位置 onmouseup()

*/

//当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown

obj.onmousedown = function (event) {

//设置捕获所有鼠标按下的事件

/*

* setCapture()

* - 只有IE支持,但是在火狐中调用时不会报错,

* 而如果使用chrome调用,会报错

*/

/*if(box1.setCapture){

box1.setCapture();

}*/

obj.setCapture && obj.setCapture();

event = event || window.event;

//div的偏移量 鼠标.clentX - 元素.offsetLeft

//div的偏移量 鼠标.clentY - 元素.offsetTop

var ol = event.clientX - obj.offsetLeft;

var ot = event.clientY - obj.offsetTop;

//为document绑定一个onmousemove事件

document.onmousemove = function (event) {

event = event || window.event;

//当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove

//获取鼠标的坐标

var left = event.clientX - ol;

var top = event.clientY - ot;

// console.log(left, top);

//修改box1的位置

obj.style.left = left + "px";

obj.style.top = top + "px";

};

//为document绑定一个鼠标松开事件

document.onmouseup = function () {

//当鼠标松开时,被拖拽元素固定在当前位置 onmouseup

//取消document的onmousemove事件

document.onmousemove = null;

//取消document的onmouseup事件

document.onmouseup = null;

//当鼠标松开时,取消对事件的捕获

obj.releaseCapture && obj.releaseCapture();

};

/*

* 当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容,

* 此时会导致拖拽功能的异常,这个是浏览器提供的默认行为,

* 如果不希望发生这个行为,则可以通过return false来取消默认行为

*

* 但是对IE8不起作用

*/

return false;

};

}

相关文章

网络安全常用术语(网络安全常用术语介绍)

黑客帽子之分白帽白帽:亦称白帽黑客、白帽子黑客,是指那些专门研究或者从事网络、计算机技术防御的人,他们通常受雇于各大公司,是维护世界网络、计算机安全的主要力量。很多白帽还受雇于公司,对产品进行模拟黑客...

记录程序第一天挖漏洞的过程(挖漏洞需要学什么语言)

第一个漏洞复现fastjson漏洞说明:在本地这个fastjson会出现问题复现的过程生成一个java文件进行攻击注入的方式javac Exploit.java但是必须编译成.class文件才能执行p...

Xamarin.Android使用教程:列表视图和适配器(2)

昨天我们已经一起学习了第1部分,这是探索Xamarin.Android的列表视图和适配器的的第2部分。在今天的文章中我们将探讨列表视图项排列使用BaseAdapter,还有自定义布局。让我们深入到代码...

C语言进阶教程:线程同步:互斥锁、条件变量与信号量

在多线程编程中,线程同步是确保数据一致性和程序正确性的关键。当多个线程需要访问共享资源时,如果缺乏适当的同步机制,就可能导致竞态条件(Race Condition)、死锁(Deadlock)等问题。本...

什么?Java 中的锁还有状态?(java中的锁都有哪些类型)

线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问...

PL/SQL Developer连接Oracle数据库详解

序言:oracle数据库比较难搞,好不容易安装上了,但是怎么连接呢,直接在服务器里用自带的命令行操作太繁琐,所以PL/SQL Developer客户端的好处就显而易见了,今天和大家聊聊客户端具体配置方...