一步一步理解拖拽Drag(一)

简介: 拖拽三部曲原理:     1、鼠标按下;     2、鼠标移动;     3、鼠标抬起。 View Code DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.

拖拽三部曲原理:
     1、鼠标按下;
     2、鼠标移动;
     3、鼠标抬起。

View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Drag一步一步理解拖拽</title>
<script type="text/javascript">
var base = {
getId:
function (id) {
return document.getElementById(id);
},
addEvent:
function (elem, type, fn) {
if (elem.addEventListener) {
elem.addEventListener(type, fn,
false);
}
else if (elem.attachEvent) {
elem.attachEvent(
"on" + type, fn);
}
else {
elem[
"on" + type] = fn;
}
},
removeEvent:
function (elem, type, fn) {
if (elem.removeEventListener) {
elem.removeEventListener(type, fn,
false);
}
else if (elem.detachEvent) {
elem.detachEvent(
"on" + type, fn);
}
else {
elem[
"on" + type] = null;
}
}
};

function Drag(obj) {
this.obj = obj;
var _this = this;
base.addEvent(obj,
"mousedown", function (event) {
_this.startDrap(event);
});
}

Drag.prototype
= {
startDrap:
function (event) {
var _this = this;

this.mousemoveHandle = function (event) {
_this.move();
};

this.mouseupHandle = function () {
_this.stopDrag();
};

base.addEvent(document,
"mousemove", this.mousemoveHandle);

base.addEvent(document,
"mouseup", this.mouseupHandle);

base.getId(
"mdiv").innerHTML = "鼠标被按下了";
},
move:
function () {
base.getId(
"mdiv").innerHTML = "鼠标移动中。。。。";

this.obj.style.left = event.clientX - this.obj.offsetLeft + "px";
this.obj.style.top = event.clientY - this.obj.offsetTop + "px";
},
stopDrag:
function () {
base.removeEvent(document,
"mousemove", this.mousemoveHandle);
base.removeEvent(document,
"mouseup", this.mouseupHandle);

base.getId(
"mdiv").innerHTML = "鼠标抬起了";
}
};


base.addEvent(window,
"load", function () {
var tmp = base.getId("mdiv");
var b = new Drag(tmp);
});
</script>
</head>
<body>
<div id="mdiv" style="width: 300px; height: 100px; border: 1px solid red; position: absolute">
</div>
</body>
</html>

 

目录
相关文章
|
4月前
|
JavaScript 前端开发
详细讲解原生js拖拽
详细讲解原生js拖拽
|
5月前
|
JavaScript
【经典】原生JS实现“用鼠标拖拽(drag)内容DIV”,滚动条对应同步滚动
【经典】原生JS实现“用鼠标拖拽(drag)内容DIV”,滚动条对应同步滚动
element-ui框架的el-dialog弹出框被遮罩层挡住了
element-ui框架的el-dialog弹出框被遮罩层挡住了
297 0
element-ui框架的el-dialog弹出框被遮罩层挡住了
Qt实现鼠标拖放(drag/drop)
Qt实现鼠标拖放(drag/drop)
196 0
|
JavaScript
|
JavaScript
Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
原文:Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)   在Silverlight中自身并没有提供拖放功能的相关实现,要实现拖放功能得借助其事件支持(MouseLeftButtonDown、MouseLeftButtonUp和MouseMove)来完成,实际应用中我们可以通过行为(Behavior)特性将拖放操作封装为行为,这样可达到代码复用的效果。
1048 0