<html>
<head>
<title>移动Div</title>
<style type="text/css" rel="stylesheet">
#movediv{
width:100px;height:100px;position:absolute;border:1px solid #000;background:#EAEAEA;
cursor:pointer;
text-align:center;
line-height:100px;
left:100px;
top:10px;
}
</style>
<script language="javascript" type="text/javascript">
var _IsMousedown = 0;
var _ClickLeft = 0;
var _ClickTop = 0;
function moveInit(divID,evt)
{
_IsMousedown = 1;
if(getBrowserType() == "NSupport")
{
return;
}
var obj = getObjById(divID);
if(getBrowserType() == "fox")
{
_ClickLeft = evt.pageX - parseInt(obj.style.left);
_ClickTop = evt.pageY - parseInt(obj.style.top);
}else{
_ClickLeft = evt.x - parseInt(obj.style.left);
_ClickTop = evt.y - parseInt(obj.style.top);
}
}
function Move(divID,evt)
{
if(_IsMousedown == 0)
{
return;
}
var objDiv = getObjById(divID);
if(getBrowserType() == "fox")
{
objDiv.style.left = evt.pageX - _ClickLeft;
objDiv.style.top = evt.pageY - _ClickTop;
}
else{
objDiv.style.left = evt.x - _ClickLeft;
objDiv.style.top = evt.y - _ClickTop;
}
}
function stopMove()
{
_IsMousedown = 0;
}
function getObjById(id)
{
return document.getElementById(id);
}
function getBrowserType()
{
var browser=navigator.appName
var b_version=navigator.appVersion
var version=parseFloat(b_version)
//alert(browser);
if ((browser=="Netscape"))
{
return "fox";
}
else if(browser=="Microsoft Internet Explorer")
{
if(version>=4)
{
return "ie4+";
}
else
{
return "ie4-";
}
}
else
{
return "NSupport";
}
}
</script>
</head>
<body>
<div id="movediv" style="left:20px;top:20px; z-index:5;" onmousedown="moveInit('movediv',event);" onmousemove="Move('movediv',event)" onmouseup="stopMove()" onmouseout="stopMove()">move</div>
<div id="movediv1" style="position:absolute;left:120px;top:120px;z-index:5; width:80px; height:80px; background-color:Blue; cursor:move;" onmousedown="moveInit('movediv1',event);" onmousemove="Move('movediv1',event)" onmouseup="stopMove()" onmouseout="stopMove()">move1</div>
<div id="main" style="position:absolute;left:420px;top:100px; width:480px; height:480px; background-color:Gray;z-index:0;">
只允许在这个范围内拖放
</div>
</body>
</html>JS拖放DIV如何只允许在这个范围内的呢 只能在id="main" 的DIV拖放 该如何的呢?
<head>
<title>移动Div</title>
<style type="text/css" rel="stylesheet">
#movediv{
width:100px;height:100px;position:absolute;border:1px solid #000;background:#EAEAEA;
cursor:pointer;
text-align:center;
line-height:100px;
left:100px;
top:10px;
}
</style>
<script language="javascript" type="text/javascript">
var _IsMousedown = 0;
var _ClickLeft = 0;
var _ClickTop = 0;
function moveInit(divID,evt)
{
_IsMousedown = 1;
if(getBrowserType() == "NSupport")
{
return;
}
var obj = getObjById(divID);
if(getBrowserType() == "fox")
{
_ClickLeft = evt.pageX - parseInt(obj.style.left);
_ClickTop = evt.pageY - parseInt(obj.style.top);
}else{
_ClickLeft = evt.x - parseInt(obj.style.left);
_ClickTop = evt.y - parseInt(obj.style.top);
}
}
function Move(divID,evt)
{
if(_IsMousedown == 0)
{
return;
}
var objDiv = getObjById(divID);
if(getBrowserType() == "fox")
{
objDiv.style.left = evt.pageX - _ClickLeft;
objDiv.style.top = evt.pageY - _ClickTop;
}
else{
objDiv.style.left = evt.x - _ClickLeft;
objDiv.style.top = evt.y - _ClickTop;
}
}
function stopMove()
{
_IsMousedown = 0;
}
function getObjById(id)
{
return document.getElementById(id);
}
function getBrowserType()
{
var browser=navigator.appName
var b_version=navigator.appVersion
var version=parseFloat(b_version)
//alert(browser);
if ((browser=="Netscape"))
{
return "fox";
}
else if(browser=="Microsoft Internet Explorer")
{
if(version>=4)
{
return "ie4+";
}
else
{
return "ie4-";
}
}
else
{
return "NSupport";
}
}
</script>
</head>
<body>
<div id="movediv" style="left:20px;top:20px; z-index:5;" onmousedown="moveInit('movediv',event);" onmousemove="Move('movediv',event)" onmouseup="stopMove()" onmouseout="stopMove()">move</div>
<div id="movediv1" style="position:absolute;left:120px;top:120px;z-index:5; width:80px; height:80px; background-color:Blue; cursor:move;" onmousedown="moveInit('movediv1',event);" onmousemove="Move('movediv1',event)" onmouseup="stopMove()" onmouseout="stopMove()">move1</div>
<div id="main" style="position:absolute;left:420px;top:100px; width:480px; height:480px; background-color:Gray;z-index:0;">
只允许在这个范围内拖放
</div>
</body>
</html>JS拖放DIV如何只允许在这个范围内的呢 只能在id="main" 的DIV拖放 该如何的呢?
其中会涉及到算法,判断鼠标x、y 和div的宽度、高度结合起来判断的
当然也可以用插件
我去试看看。
懂的 可以帮我改下。 谢谢了
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
.divDemo{
border:#00C solid 1px;
padding:10px;
display:inline;
float:left;
}
#divBody{
windth:800px;
height:800px;
border:#00F solid 1px;
}
#divShow{
border:#F00 solid 1px;
position:absolute;
}
</style>
<script type="text/javascript">
var x = 0;
var y = 0;
function down(event){
document.getElementById('divBody').innerHTML = "";
var evt = event || window.event;
document.getElementById('divBody').setAttribute('onmousemove','showDiv(event)');
x = evt.clientY;
y = evt.clientX;
}
function showDiv(event){
var evt = event || window.event;
if(x != 0 && y != 0 && (evt.clientX - y) >= 0 && (evt.clientY - x) >= 0){
var divShow = document.createElement('div');
divShow.id = "divShow";
divShow.style.top = x;
divShow.style.left = y;
divShow.style.width = (evt.clientX - y) + "px";
divShow.style.height = (evt.clientY - x) + "px";
document.getElementById('divBody').innerHTML = "";
document.getElementById('divBody').appendChild(divShow);
}
else{
x = 0;
y = 0;
document.getElementById('divBody').innerHTML = "";
}
return false;
}
function paintDiv(event){
var evt = event || window.event;
if(x != 0 && y != 0 && (evt.clientX - y) > 0 && (evt.clientY - x) > 0){
var divShow = document.createElement('div');
divShow.id = "divShow";
divShow.style.top = x + "px";
divShow.style.left = y + "px";
divShow.style.width = (evt.clientX - y) + "px";
divShow.style.height = (evt.clientY - x) + "px";
document.getElementById('divBody').innerHTML = "";
document.getElementById('divBody').appendChild(divShow);
document.getElementById('divBody').setAttribute('onmousemove','');
x = 0;
y = 0;
}
else{
x = 0;
y = 0;
document.getElementById('divBody').innerHTML = "";
}
}
</script>
</head>
<body>
<div id="divBody" onmousedown="down(event)" onmouseup="paintDiv(event)"></div>
</body>
</html>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
#divFloat{
position:absolute;
top:200px;
left:200px;
width:300px;
height:200px;
background:#CCC;
}
</style>
<script type="text/javascript">
var x = 200;
var y = 200;
var m = 0;
var n = 0;
function xuanzhong(event){
var evt = event || window.event;
m = evt.clientY - x;
n = evt.clientX - y;
document.getElementById('divFloat').setAttribute("onmousemove","tuozhuai(event)");
}
function tuozhuai(event){
var evt = event || window.event;
document.getElementById('divFloat').style.top = evt.clientY - m + "px";
document.getElementById('divFloat').style.left = evt.clientX - n + "px";
}
function jieshu(event){
var evt = event || window.event;
x = evt.clientY - m;
y = evt.clientX - n;
document.getElementById('divFloat').setAttribute("onmousemove","");
}
</script>
</head>
<body>
<div id="divFloat" onmousedown="xuanzhong(event)" onmouseup="jieshu(event)">
这是一个位置不固定的DIV!
</div>
</body>
</html>
谢谢 你们的回答了。 我总于找到了一个
<style> .dragArea{
/*background-color:blue;
filter:alpha(opacity=50);
-moz-opacity:0.5;*/
border:1px solid #CCCCCC;
} body{
margin:0px;
}
</style>
<body>
<div style="top:100px;left:200px;width:100px;height:100px;position:absolute;background:black;" onselectstart="return false;"
onmousedown="mousedown.apply(this,arguments);">
</div>
</body>
<script type="text/javascript">
/***********************************************************************
* 函数名:startdrag
* 说明:开始一段拖动行为,检查拖动行为的过程和终止并响应相应的事件。
* 参数:
* parent DOM对象,拖动所属的父对象,必需是容器,可以为document.body
* onmove 函数对象,事件,拖动开始后,鼠标移动触发事件
* onfinish 函数对象,事件,拖动结束时,触发事件一次
* area 对象,可以缺省,必须包含4个属性top left width height,以指定鼠标移动的有效范围,默认值为parent的全部范围。
***********************************************************************/ function startdrag(parent,onmove,onfinish,area)
{
var up,out,over; var divarea=document.createElement("div");
if(!area)area={
/*"top":"0px",
"left":"0px",
"width":"100%",
"height":"100%"*/
"top":"80px",
"left":"100px",
"width":"500px",
"height":"500px"
}
divarea.style.position="absolute";
divarea.style.top=area.top;
divarea.style.left=area.left;
divarea.style.width=area.width;
divarea.style.height=area.height;
divarea.style.overflow="hidden";
divarea.style.zIndex="10000";
divarea.className="dragArea";
parent.appendChild(divarea);
if(divarea.attachEvent)
{
divarea.attachEvent("onmousemove",onmove)
document.attachEvent("onmouseup",up=function(){
divarea.detachEvent("onmousemove",onmove);
document.detachEvent("onmouseup",up);
divarea.detachEvent("onmouseout",out);
parent.removeChild(divarea);
onfinish(event||arguments[0]);
});
divarea.attachEvent("onmouseout",out=function(){
divarea.detachEvent("onmousemove",onmove);
document.detachEvent("onmouseup",up);
divarea.detachEvent("onmouseout",out);
parent.removeChild(divarea);
onfinish(event||arguments[0]); });
} else if(divarea.addEventListener)
{
divarea.addEventListener("mousemove",onmove,true);
document.addEventListener("mouseup",up=function(){
divarea.removeEventListener("mousemove",onmove,true);
document.removeEventListener("mouseup",up,true);
divarea.removeEventListener("mouseout",out,true);
parent.removeChild(divarea);
onfinish(event||arguments[0]);
},true);
divarea.addEventListener("mouseout",out=function(){
//alert("out");
divarea.removeEventListener("mousemove",onmove,true);
document.removeEventListener("mouseup",up,true);
divarea.removeEventListener("mouseout",out,true);
parent.removeChild(divarea);
onfinish(event||arguments[0]);
},true);
} }
</script>
<script type="text/javascript">
function mousedown()
{
var e=arguments[0]||event;
var me=this;
var dy=e.clientY-parseInt(me.style.top);
var dx=e.clientX-parseInt(me.style.left);
startdrag(
document.body,
function(e){
e=e||event;
if(e.clientY-dy<0||e.clientY-dy>parseInt(document.body.clientHeight)-100)return;
if(e.clientX-dx<0||e.clientX-dx>parseInt(document.body.clientWidth)-100)return;
me.style.top=e.clientY-dy;
me.style.left=e.clientX-dx;
},
function(e){
}
);
}
</script>