js用继承实现拖拽效果

样式

	<style type="text/css">
			#box{
				width: 200px;
				height: 200px;
				background: red;
				position: absolute;
			}
			#pox{
				width: 200px;
				height: 200px;
				background: blue;
				position: absolute;
				left: 300px;
				top: 100px;
			}
		</style>

实现代码

<body>
		<div id="box">
			
		</div>
		<div id="pox">
			
		</div>
	<script type="text/javascript">
		
		
		function Drag(obj){
			this.obj = obj;
			/*this.x = 0;
			this.y = 0;*/
			this.init();
		}
		
		Drag.prototype = {
			
			constructor : Drag,
			
			init : function(){
				this.drag();
			},
			drag : function(){
				var _this = this;
				this.obj.onmousedown = function(eve){
					var e = eve || event;
					_this.x = e.offsetX;
					_this.y = e.offsetY;
					document.onmousemove = function(eve){
						var e = eve || event;
						_this.l = e.clientX - _this.x;
						_this.t = e.clientY - _this.y;
						
						_this.move();
						
						return false;
					}
					document.onmouseup = function(){
						document.onmousemove = null;
					}
				}
			},
			move : function(){
				this.obj.style.left = this.l + "px";
				this.obj.style.top = this.t + "px";
			}
			
		}
		
		function SonDrag(obj){
			Drag.call(this,obj);
		}
		
		SonDrag.prototype = Object.create(Drag.prototype);
		SonDrag.prototype.constructor = SonDrag;
		SonDrag.prototype.move = function(){
			var maxL = document.documentElement.clientWidth - this.obj.offsetWidth;
			var maxT = document.documentElement.clientHeight - this.obj.offsetHeight;
			
			this.l = this.l < 0 ? 0 : (this.l > maxL ? maxL : this.l);
			this.t = this.t < 0 ? 0 : (this.t > maxT ? maxT : this.t);
			
			this.obj.style.left = this.l + "px";
			this.obj.style.top = this.t + "px";
		}
		
		new Drag(document.getElementById("box"));
		
		new SonDrag(document.getElementById("pox"));//
		
		
		
	</script>
	</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值