记得最近论坛里好像出现过,找了个过来 <!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>拖拽</title> <style> html,body{height:100%;overflow:hidden;} body,div,h2{margin:0;padding:0;} body{font:12px/1.5 Tahoma;} #win{position:absolute;top:40%;left:33%;width:400px;height:33px;background:#fc0;cursor:move;} #win1{position:absolute;top:59%;left:59%;width:400px;height:33px;background:#fc0;cursor:move;}</style> <script> window.onload = function () { var oWin = document.getElementById("win"); var bDrag = false; var disX = disY = 0; oWin.onmousedown = function (event){ bDrag = true; disX = event.clientX - oWin.offsetLeft; disY = event.clientY - oWin.offsetTop; return false }; document.onmousemove = function (event){ if (!bDrag) return; var iL = event.clientX - disX; var iT = event.clientY - disY;
//把图层范围定在浏览器窗口内 var maxL = document.documentElement.clientWidth - oWin.offsetWidth; var maxT = document.documentElement.clientHeight - oWin.offsetHeight; iL = iL < 0 ? 0 : iL; iL = iL > maxL ? maxL : iL; iT = iT < 0 ? 0 : iT; iT = iT > maxT ? maxT : iT;
记得最近论坛里好像出现过,找了个过来
<!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>拖拽</title>
<style>
html,body{height:100%;overflow:hidden;}
body,div,h2{margin:0;padding:0;}
body{font:12px/1.5 Tahoma;}
#win{position:absolute;top:40%;left:33%;width:400px;height:33px;background:#fc0;cursor:move;}
#win1{position:absolute;top:59%;left:59%;width:400px;height:33px;background:#fc0;cursor:move;}</style>
<script>
window.onload = function ()
{
var oWin = document.getElementById("win");
var bDrag = false;
var disX = disY = 0;
oWin.onmousedown = function (event){
bDrag = true;
disX = event.clientX - oWin.offsetLeft;
disY = event.clientY - oWin.offsetTop;
return false
};
document.onmousemove = function (event){
if (!bDrag)
return;
var iL = event.clientX - disX;
var iT = event.clientY - disY;
//把图层范围定在浏览器窗口内
var maxL = document.documentElement.clientWidth - oWin.offsetWidth;
var maxT = document.documentElement.clientHeight - oWin.offsetHeight;
iL = iL < 0 ? 0 : iL;
iL = iL > maxL ? maxL : iL;
iT = iT < 0 ? 0 : iT;
iT = iT > maxT ? maxT : iT;
oWin.style.marginTop = oWin.style.marginLeft = 0;
oWin.style.left = iL + "px";
oWin.style.top = iT + "px";
return false
};
document.onmouseup = function (){
bDrag = false;
};
};
</script>
</head>
<body>
<div id="win">0</div>
</body>
</html>
javascript 模仿windows拖动 封装类
onmousedown的时候让onmousemove的代码允许执行,onmouseup的时候不允许执行
这个允不允许用个bool值来控制就好了
<title>Test</title>
</head>
<body>
<div id="show" style="width:100px; height:100px; position:absolute; top:0px; left:0px; background:#669900">div1:我可以被拖动</div>
<script>
function drag(elem, container){
var state = false, original_x, original_y, zindex_buf;
var _container = container ? container : document;
elem.onmousedown = function(event){
var e = event ? event : window.event;
original_x = e.clientX;
original_y = e.clientY;
original_left = this.offsetLeft;
original_top = this.offsetTop;
state = true;
zindex_buf = this.style.zIndex;
this.style.zIndex = 10000;
}
_container.onmousemove = function(event){
if(state){
var e = event ? event : window.event;
elem.style.left = e.clientX - original_x + original_left;
elem.style.top = e.clientY - original_y + original_top;
}
}
_container.onmouseup = function(event){
if(state){
elem.style.zIndex = zindex_buf;
state = false;
original_x = 0;
original_y = 0;
original_left = 0;
original_top = 0;
}
}
}
drag(document.getElementById('show'));
</script>
</body>
</html>