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

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

maynowei10个月前 (09-11)技术知识129

/*

* 拖动图片封装

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;

};

}

相关文章

Android让视图折叠(安卓叠加视图设置)

Android UI Libs之ExpandableLayout1. 说明ExpandableLayout,顾名思义,可扩展的布局,是一个可以帮助我们实现折叠功能的第三方库,折叠时,只显示头部,打开时...

LabVIEW实现Oracle数据库的访问(labview数据库查询界面)

1. 安装 Oracle 客户端下载:从 Oracle 官方网站下载适用于 Windows 操作系统的 Oracle 驱动程序。确保下载的版本与 LabVIEW 环境和操作系统兼容。1)以 Windo...

Oracle中泄露“天机”的TNS(在oracle中发出的下列查询)

数据库的安全是长期存在的问题。在目前大量的数据泄露事件以及漏洞面前,大家看到的大都是SQl注入、越权操作、缓冲区溢出等这些具体漏洞。往往却忽视了造成这些问题的前提,黑客想要入侵数据库一定会尝试获取数据...

你可能疏忽的plsql和navicat连接Oracle注意点

在日常开发中,我们总是少不了要连接数据库,你是否遇到过填写的账号、密码、连接地址都对,但就是连接不上Oracle的情况?这里说一下其中一种连接不上Oracle的原因,这种情况简单,但很可能被疏忽。记下...

采用Oracle OSB总线进行服务注册和接入

做大型企业内部业务系统集成的应该都知道,Oracle SOA套件当前是应用广泛的一个商业集成产品套件,其中包括了OSB服务总线, BPEL业务流程引擎,BPM业务流程管理,ODI大数据服务集成,MFT...

Docker安装Oracle 11g 数据库过程详解

1、查看docker 版本[root@node3 ~]# docker version Client: Version: 18.09.6 API version:...