随意拖动图片

<div  id="img1"  οnclick="moveImg(this)"  style="position:absolute;left:0px;top:100px;"><img src="http://images.163.com/homepage/logo.gif" alt="" /></div>

 

js

   //为Number增加一个属性,判断当前数据类型是否是数字
    Number.prototype.NaN0=function(){return isNaN(this)?0:this;}

    //全局变量
    var iMouseDown=false;
    var dragObject=null;

    //获得鼠标的偏移量(对象2-对象1)
    function getMouseOffset(target,ev)
    {
        ev=ev||window.event;
        var docPos=getPosition(target);
        var mousePos=mouseCoords(ev);
        return {x:mousePos.x-docPos.x,y:mousePos.y-docPos.y};
    }

    //获得事件发生的实际位置----------------------对象1
    function getPosition(e)
    {
        var left=0;
        var top=0;
        //相对位置累加得到实际位置
        while(e.offsetParent)
        {
            left+=e.offsetLeft+(e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
            top+=e.offsetTop+(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
            e=e.offsetParent;
        }
        left+=e.offsetLeft+(e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
        top+=e.offsetTop+(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
        return {x:left,y:top};
    }
    //获得发生事件鼠标的位置----------------------对象2
    function mouseCoords(ev)
    {
        if(ev.pageX||ev.pageY)
        {
            return {x:ev.pageX,y:ev.pageY};
        }
        return {x:ev.clientX+document.body.scrollLeft-document.body.clientLeft,y:ev.clientY+document.body.scrollTop-document.body.clientTop};
    }

    //定义可以拖拽的对象
    function makeDragable(item)
    {
        if(!item) return;
        //为可拖拽对象定义一个onmousedown事件的方法
        ev=window.event;
        item.οnmοusedοwn=function(ev)
        {
            dragObject=this;
            mouseOffset=getMouseOffset(this,ev);
            return false;
        }
    }

    //定义鼠标点下所调用的方法
    function mouseDown(ev)
    {
        ev=ev||window.event;
       
        var target=ev.target||ev.srcElement;
        if(target.onmousedown||target.getAttribute('DragObj'))
        {
            return false;
        }   
    }
    //鼠标抬起后释放对象
    function mouseUp(ev)
    {
        dragObject = null;
        //onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false
        iMouseDown = false;
    }

    //鼠标移动
    function mouseMove(ev)
    {
        ev=ev||window.event;
        var target   = ev.target || ev.srcElement;
        var mousePos = mouseCoords(ev);
        if(dragObject)
        {
            if(dragObject.style)
            {
                //移动对象
                dragObject.style.left=mousePos.x - mouseOffset.x;
                dragObject.style.top= mousePos.y - mouseOffset.y;
            }
        }
        //lMouseState = iMouseDown;
        if(dragObject) return false;
    }
    document.οnmοusedοwn=mouseDown;
    document.οnmοusemοve=mouseMove;
    document.οnmοuseup=mouseUp;


    function moveImg(imgs)
    {
        var img1=document.getElementById(imgs);
        makeDragable(img1);
    } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值