写了一个拖拽,可是怎么拖也拖不动,请帮忙看一下代码哪里有问题,求指点。

图片描述

我想将鼠标放在“请拖拽”上边从而实现拖拽功能。
下面是代码:

<div id="box">
    <div id="main">
        <div id="drag">请拖拽</div>
        <div class="content">内容</div>
    </div>
</div>

js:

var oDrag= document.getElementById('box');
var oMain= document.getElementById('main');
oDrag.onmousedown=function(ev){

    var oEvent=ev||event;
    var disX=oEvent.clientX-oDrag.offsetLeft;
    var disY=oEvent.clientY-oDrag.offsetTop;

    oMain.onmousemove=function(ev){
        var oEvent=ev||event;
        var l=oEvent.clientX-disX;
        var t=oEvent.clientY-disY;

        if(l<0){
            l=0;
        }else if(l>document.documentElement.clientWidth-oDrag.offsetWidth){
            l=document.documentElement.clientWidth-oDrag.offsetWidth;
        }
        if(t<0){
            t=0;
        }else if(t>document.documentElement.clientHeight-oDrag.offsetHeight){
            t=document.documentElement.clientHeight-oDrag.offsetHeight;
        }
        oDrag.style.left=l+'px';
        oDrag.style.top=t+'px';
    };

    oMain.onmouseup=function(){
        oMain.onmousemove=null;
        oMain.onmouseup=null;
        return false;
    };

};

实在找不到为什么,也不报错,请大神指点。

阅读 3.3k
5 个回答

感觉应该是没有加定位吧。要实现拖动的话,元素必须设置绝对定位或者固定定位的哦。

既然拖不动,那就看一下left和top有没有赋值成功,赋值成功了再看一下position设置好了吗

拖不动说明你没设置浮动也就是position:样式

1、给#box 加上绝对定位
2、js第三行应该是 oDrag.onmouseover。因为mousedown事件只是一瞬间的事情
做完这两步的话就可以慢慢移动了

推荐问题