javascript(21)练习-拖拽效果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			*{
				padding:0px;
				margin:0px;
				
			}
			#box{
				width:100px;
				height:100px;
				background-color: fuchsia;
				position: absolute;
			}
		</style>
		<script>
			window.onload=function(){
				var box=document.getElementById("box");
				drag(box);
				
			};
			function drag(obj){
				//按下鼠标的时候进行操作
				obj.onmousedown=function(event){
					event=event||window.event;
					//修正鼠标在div中位置
					var	currentX=event.clientX-obj.offsetLeft;
					var	currentY=event.clientY-obj.offsetTop;
					//修正水平,垂直偏移量scroll
					var sX;
					var sY;
					//鼠标位置
					var clientY;
					var clientX;
					//在整个文档中移动
					//判断有没有这个对象
					if(obj.setCapture)
					obj.setCapture()
					document.onmousemove=function(event){
						event=event||window.event;
						
						//修正水平,垂直偏移量scroll
						sX=document.body.scrollLeft;
						sY=document.body.scrollTop;
						//改变div的位置
						clientY=event.clientY;
						clientX=event.clientX;
						obj.style.top=clientY-currentY+sY+"px";
						obj.style.left=clientX-currentX+sX+"px";
						//停止拖动事件:onmouseup
						document.onmouseup=function(){
							if(obj.releaseCapture)
							obj.releaseCapture();
							//取消move
							document.onmousemove=null;
							//取消掉自己
							document.onmouseup=null;
						};
					};
					//取消拖拽之后可能会被搜索的可能,之前的setCapture也是这样的
					return false;
					
				};
			}
		</script>
	</head>
	<body>
		<div id="box"></div>
	</body>
</html>


鼠标在div的相对位置:
        var currentX=event.clientX-obj.offsetLeft;
        var currentY=event.clientY-obj.offsetTop;

停止拖拽:
在document.onmousemove中添加一个onmousedup事件
取消onmousemove和它自己

防止被浏览器误搜索
其他浏览器:在函数的末尾加上return false;

IE8以及之下的浏览器
setCapture,releaseCapture.
照常先对这个方法进行判断,看他是否存在。(存在就是IE浏览器,不存在就是其他浏览器)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值