拖拽的组件开发

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute;}
#div2{ width:100px; height:100px; background:yellow; position:absolute; left:100px;}
#div3{ width:100px; height:100px; background:blue; position:absolute; left:200px;}
#div4{ width:100px; height:100px; background:green; position:absolute; left:300px;}
</style>
<script>

//组件开发 : 多组对象,像兄弟之间的关系( 代码复用的一种形式 )

window.onload = function(){
    
    var d1 = new Drag();
    d1.init({    //配置参数
        id : 'div1'
    });
    
    var d2 = new Drag();
    d2.init({   //配置参数
        id : 'div2',
        toDown : function(){
            document.title = 'hello';
        }
    });
    
    var d3 = new Drag();
    d3.init({    //配置参数
        id : 'div3',
        toDown : function(){
            document.title = '妙味';
        },
        toUp : function(){
            document.title = '课堂';
        }
    });
    
    var d4 = new Drag();
    d4.init({    //配置参数
        id : 'div4',
        toUp : function(){
            document.title = 'beybye';
        }
    });
    
};

function Drag(){
    this.obj = null;
    this.disX = 0;
    this.disY = 0;
    
    this.settings = {   //默认参数
        toDown : function(){},
        toUp : function(){}
    };
    
}
Drag.prototype.init = function(opt){
    
    var This = this;
    
    this.obj = document.getElementById(opt.id);
    
    extend( this.settings , opt );
    
    this.obj.onmousedown = function(ev){
        var ev = ev || window.event;
        This.fnDown(ev);
        
        This.settings.toDown();
        
        document.onmousemove = function(ev){
            var ev = ev || window.event;
            This.fnMove(ev);
        };
        document.onmouseup = function(){
            This.fnUp();
            
            This.settings.toUp();
            
        };
        return false;
    };
    
};

Drag.prototype.fnDown = function(ev){
    this.disX = ev.clientX - this.obj.offsetLeft;
    this.disY = ev.clientY - this.obj.offsetTop;
};
Drag.prototype.fnMove = function(ev){
    this.obj.style.left = ev.clientX - this.disX + 'px';
    this.obj.style.top = ev.clientY - this.disY + 'px';
};
Drag.prototype.fnUp = function(){
    document.onmousemove = null;
    document.onmouseup = null;
};





function extend(obj1,obj2){
    for(var attr in obj2){
        obj1[attr] = obj2[attr];
    }
}


</script>
</head>

<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
</body>
</html>

 

转载于:https://my.oschina.net/u/3147332/blog/807098

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值