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

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

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

/*

* 拖动图片封装

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;

};

}

相关文章

利用Axure+js创建可配置地图页面(axure嵌入地图)

编辑导语:如何利用Axure实现自定义地图展示?本篇文章里,作者结合Axure与高德地图,对如何在Axure中设置相应参数、进而预览时实现自定义地图展示效果的操作流程进行了示范和总结,一起来看一下。本...

分享我的产品策划流程,希望对你也有用

本文笔者梳理拆解了自己的产品策划流程,并给出了自己对各流程的思考,希望能够给你带来一定的启发。记得刚开始做产品出需求方案的时候,上来就开始画原型写文档,在写的过程中发现某个交互没想明白或者漏了一部分逻...

Flutter 之 ListView(flutter框架)

在 Flutter 中,ListView 可以沿一个方向(垂直或水平方向)来排列其所有子 Widget,常被用于需要展示一组连续视图元素的场景ListView 构造方法ListView:仅适用于列表中...

Android TabLayout + ViewPager2使用

1、xml文件<!--明细列表--> <com.google.android.material.tabs.TabLayout android:id="@+id/ty_...

Linux系统编程—互斥量mutex(linux 互斥量)

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也...

C语言编写多线程,什么时候要使用互斥锁?为什么要使用互斥锁?

在多线程编程中,当多个线程同时访问共享资源(如变量、文件等)时,会出现竞态条件(Race Condition)问题,导致程序的行为不可预测。为了避免这种问题,需要使用互斥锁来保护共享资源的访问。互斥锁...