使用传统的js和css怎样实现在一个Div的范围中拖拽另一个Div. 请高手指教。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用传统的js和css怎样实现在一个Div的范围中拖拽另一个Div. 请高手指教。相关的知识,希望对你有一定的参考价值。

参考技术A 以下直接可以运行。
如果DIV在ID为area的div中,即可拖拽。我在Drag函数里做了对父div的判断。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>鼠标拖拽</title>
<script type="text/javascript">
function Drag(o, e)
if(o.parentElement!=document.getElementById('area')) return;
var e = window.event || e;
var _x = e.offsetX || e.layerX;
var _y = e.offsetY || e.layerY;
o.style.filter = 'Alpha(opacity=70)';
o.style.opacity = '0.7';
document.onmousemove = function(e)
var e = window.event || e;
o.style.left = e.clientX - _x + 'px';
o.style.top = e.clientY - _y + 'px';
o.style.cursor="move";

document.onmouseup = function(e)
document.onmousemove = null;
o.style.filter = o.style.opacity = '';
o.style.cursor="default";


</script>
</head>
<body>
<div id='area'>
<div onmousedown="Drag(this, event)" style="position:absolute;border:1px solid red;background:pink;width:400px;height:300px;"></div>
</div>
<div onmousedown="Drag(this, event)" style="position:absolute;left:500px;border:1px solid red;background:pink;width:400px;height:300px;"></div>
</body>
</html>
参考技术B 判断时改用 if($(objid).style.display="block")

不显示;

else

显示

你调用时实参始终是"show",怎么能实现转换呢?
参考技术C 这里有一个在div里面拖动另一个层的效果
可以参考一下

参考资料:http://www.blueidea.com/common/shoutbox/redir.asp?5=n&id=12284

本回答被提问者采纳

js 怎样使div无法响应点击事件

js 怎样使div无法响应点击事件
根据div的id去决定某个div标签无法响应点击事件
如何写呢?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!-- 引入jquery -->
<script src="js/jquery-1.7.2.min.js"></script>
</head>
<body>

<ul>
<li>第一个</li>
<li>第二个</li>
<li id="unbind">第三个</li>
</ul>

<script>
$(function()
//给li绑定点击事件
$("li").click(function(event) 
//返回当前li的索引
alert($(this).index());
);
//给id为unbind的元素删除点击事件
$('#unbind').unbind("click");
)
</script>
</body>
</html>

unbind(type [,data])     //data是要移除的函数

$('#btn').unbind("click"); //移除click

$('#btn').unbind(); //移除所有 

参考技术A

你是指事件冒泡么,作为一个编程菜鸟,我平常用stopPropagation来阻止事件冒泡

例:

<div id="outer" onclick="alert('外面')">

//这里我没给div加样式,自己随便加个长和宽背景色就行了

<div id="inner" ></div>

</div>

<srtipt>

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

inner.onclick = function(e)

alert("里面");

if(e && e.stopPropagation())

stopPropagation();

else

window.event.cancelBubble = true;

//ie不支持stopPropagation方法,需要用window.event.cancelBubble

</srtipt>

参考技术B 不知道你具体想实现什么效果?
div只有你绑定了事件处理函数,才会有响应,如果不想响应,不给div绑定事件函数或者注销掉之前绑定的函数就可以了啊
如果你是这样的情况,比如布局是这样:
<div id="box">
<div id="div1"></div>
</div>
box 上有事件,但你不想在点击div1 时响应box 的事件,那就可以取消div1的事件冒泡,假设已经获取到div1,不想响应的事件是点击事件,大概代码是:
div1.onclick = function(ev)
ev.cancelBubble = true;
参考技术C

代码如下:

//首先获取所有div 然后你不是要根据div ID进行判断吗

var aDiv=document.getElementsByTagName('div');

//遍历div
for(var i=0;i<aDiv.length;i++)

aDiv[i].onclick=function()

if(this.id='你要排除的那个div ID')

return;

;

;

;

参考技术D 大概是两种方式,
1】js的方式,写另外一个事件来判断,阻止你要响应的事件
2】css方式,在你想阻止的区域上面定位一个看不见的div,挡住目标div

以上是关于使用传统的js和css怎样实现在一个Div的范围中拖拽另一个Div. 请高手指教。的主要内容,如果未能解决你的问题,请参考以下文章

html中点击按钮怎样改变div背景颜色

js在opera下怎样获取可编辑div中的鼠标光标和选中文本

用js怎样自动循环生成div?

怎样用 CSS + JS 美化网页中的 select 下拉框

怎样实现两个div并排,并手动拉伸左边DIV宽度的时候,另一边DIV宽度缩小相应宽度。

求大神指教啊,div+css,怎样用css控制一个div层的高度等于另一个层的高度,只用css控制不用js