实现小窗口拖拽的效果

Posted 大耳朵兔兔兔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现小窗口拖拽的效果相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>

<html>

 

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

#box {

height: 300px;

width: 300px;

background-color: green;

position: absolute;

}

</style>

</head>

 

<body>

<div id="box">

 

</div>

</body>

<script type="text/javascript">

var box = document.getElementById("box");

//鼠标按下的函数

box.onmousedown = function(ev) {

var oEvent = ev || event;

//求出鼠标和box的位置差值

var x = oEvent.clientX - box.offsetLeft;

var y = oEvent.clientY - box.offsetTop;

//鼠标移动的函数

//把事件加在document上,解决因为鼠标移动太快时,

//鼠标超过box后就没有了拖拽的效果的问题

document.onmousemove = function(ev) {

var oEvent = ev || event;

 

//保证拖拽框一直保持在浏览器窗口内部,不能被拖出的浏览器窗口的范围

var l = oEvent.clientX - x;

var t = oEvent.clientY - y;

if(l < 0) {

l = 0;

 

} else if(l > document.documentElement.clientWidth - box.offsetWidth) {

l = document.documentElement.clientWidth - box.offsetWidth;

}

if(t < 0) {

t = 0;

} else if(t > document.documentElement.clientHeight - box.offsetHeight) {

t = document.documentElement.clientHeight - box.offsetHeight;

}

box.style.left = l + "px";

box.style.top = t + "px";

}

//鼠标抬起的函数

document.onmouseup = function() {

document.onmousemove = null;

document.onmouseup = null;

}

//火狐浏览器在拖拽空div时会出现bug

//return false阻止默认事件,解决火狐的bug

return false;

 

}

</script>

 

</html>

以上是关于实现小窗口拖拽的效果的主要内容,如果未能解决你的问题,请参考以下文章

js实现拖拽效果

WPF总结窗口和控件拖拽的实现

js实现鼠标的拖拽效果

编写可拖拽的弹窗

HTML5+Three.js实现可拖拽的虚拟天空环境全景动画

android开发游记:ItemTouchHelper 使用RecyclerView打造可拖拽的GridView