window.onload = function () {
/*
* 拖拽box1的元素
* - 拖拽的流程
* 1.当鼠标在被拖拽的元素上按下时开始拖拽 onmousedown
* 2.当鼠标移动时被拖拽的元素跟随鼠标移动 onmousemove
* 3.当鼠标松开时被拖拽的对象固定到当前位置 onmouseup
*/
var img01 = document.getElementById("img")
drag(img01);
};
/*
* 提取一个专门用来设置拖拽的函数
* 参数,开启拖拽的元素
*/
function drag(obj) {
obj.onmousedown = function (event) {
//设置box1捕获所有鼠标按下的事件
/*
* setCapture()
* - 只有IE支持,但是在火狐中调用时不会报错
* 而如果使用chrome调用,会报错
*/
obj.setCapture && obj.setCapture();
event = event || window.event
//div的偏移量,鼠标.clientX-元素.offsetLeft
//div的偏移量,鼠标.clientY-元素.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;
//修改box1的位置
obj.style.transition="none"
obj.style.position= "absolute"
obj.style.left = left + "px";
obj.style.top = top + "px";
};
//为元素绑定一个鼠标松开事件
document.onmouseup = function () {
//当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
//取消document的onmousemove事件
document.onmousemove = null;
document.onmouseup = null;
//当鼠标松开时,取消对事件的捕获
obj.releaseCapture && obj.releaseCapture();
};
/*
* 当我们拖拽一个网页的内容时,浏览器会默认去搜索引擎中搜索内容
* 此时会导致拖拽功能的异常,这是浏览器提供的默认行为
* 如果不希望发生这个行为,则可以通过return false来取消默认行为
*/
return false;
};
};
使用js拖拽图标
于 2023-08-18 15:31:28 首次发布