JavaScript 元素拖拽

var EventUtil = {
    /**
     * 兼容性的添加事件
     * @Author  xxxx
     * @DateTime 2018-01-17
     * @param    {Element}   element 元素类型
     * @param    {String}   type    事件名称
     * @param    {响应函数}   handler 响应函数
     */
    addHandler:function(element,type,handler){
        if(element.addEventListener){
            //DOM2
            element.addEventListener(type,handler,false);
        }else if(element.attachEvent){
            //IE
            element.attachEvent("on"+type,handler);
            alert("IE");
        }else {
            //DOM0
            element["on"+type] = handler;
            alert("DOM0");
        }
    },
    removeHandler:function(element,type,handler){
        if(element.removeEventListener){
            //DOM2
            element.removeEventListener(type,handler,false);
        }else if(element.datachEvent){
            //IE
            element.datachEvent("on"+type,handler);
            alert("IE");
        }else {
            //DOM0
            element["on"+type] = null;
            alert("DOM0");
        }
    }

}

//拖拽函数

function drag(e) {
    console.log('draging');
    let width = $("#in").width();
    let height = $("#in").height();
    let maxWidth = $(document).width()-width;
    let maxHeight = $(document).height()-height;
    let x = (e.clientX - width / 2) > maxWidth ? maxWidth: e.clientX - width / 2;
    let y = (e.clientY - height / 2) > maxHeight ? maxHeight: e.clientY - height / 2;
    console.log(x,y);
    $("#in").css({
        left: x >= 0 ? x : 0,
        top: y >= 0 ? y : 0
    });

}

//添加 mousemove事件

function addMove(){
    let inner=document.getElementById('in');
    console.log('addMove');
    // inner.style.cursor = 'move';
    EventUtil.addHandler(inner,"mousemove",drag);

}

let inner=document.getElementById('in');

EventUtil.addHandler(inner,"mousedown",()=>{
         EventUtil.addHandler(window,"mousemove",drag);
          EventUtil.addHandler(window,"mouseup",reMove);
   })

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值