Javascript 简单实现鼠标拖动DIV
Javascript简单的实现鼠标拖动DIV的效果。没有什么技术含量,全当笔记。
要想实现鼠标拖动效果,免不了要计算元素在浏览器中的坐标,那首先来学习一下各种坐标。
参考:
Javascript获取页面的各种坐标汇总
实现拖动:
1.定义需要的变量
var bool=false, pageX=0, pageY=0, //需要拖动的目标DIV element = $("#tb_window"), eWidth = element.width(), eHeight = element.height(), //在该DIV的范围内拖动 pElement = $("#flashFrame"), pWidth = pElement.width(), pHeight = pElement.height();
2.鼠标mousedown事件计算鼠标焦点x相对目标DIV的坐标
element.mousedown(function(event) { needMove=true; var position = element.position(); pageX = event.pageX-position.left; //鼠标和DIV的相对坐标 pageY = event.pageY-position.top; element.css('cursor','move'); });3.鼠标mouseup事件将变量needMove赋值false,表示不需要移动DIV
element.mouseup(function(event) { needMove=false; });
4.鼠标的mousemove事件开始移动目标DIV
element.mousemove(function(event) { if(!needMove) {return;} //鼠标在页面的坐标 - 鼠标和DIV的相对坐标 = DIV在页面的坐标 var ePageX = event.pageX; var ePageY = event.pageY; var x = ePageX-pageX; var y = ePageY-pageY; if (ePageX <= eWidth/ 2 || ePageX >= pWidth - eWidth / 2) { return; } if (ePageY< eHeight / 2 || ePageY >= pHeight - eHeight / 2) { return; } element.css("left", x); element.css("top", y); });
5.总结,以上代码只是简单实现鼠标拖动DIV的思路(当然功能也是可以的),具体的性能,兼容性和代码扩展性都有待商榷。比如:还可以增加参数控制DIV在指定的大小范围内拖动等。