WEB前端开发学习----11. JQuery 实现简单的拖拽效果

拖拽效果在网页中很常见。实现起来也不难。记录一下今天实现的简单效果。

拖拽演示

快速拖动时,会出现问题,以后修改.

说白了,就是3个点击事件。

1. 按下鼠标左键, 触发点击事件,此时记录下可以得到鼠标相对于拖动控件的位置(当前鼠标位置-控件位置);

2. 拖动鼠标,触发移动事件,可以计算出鼠标移动的距离(当前鼠标位置-之前算出的相对位置),也就是拖拽控件所移动的距离;

3. 鼠标抬起,结束拖动。


在JQ中,event.pageX    event.pageY可以获取鼠标的位置,相对于文档左上角。

如图:


注意,在jq获取控件的位置时:

x=event.pageX-parseInt($("#box").css("left"));
y=event.pageY-parseInt($("#box").css("top"));

要去掉单位px.


但是 在修改控件位置时,不要加单位,也不要加引号,也不用加单位px!

dx=event.pageX-x;
dy=event.pageY-y;
//不要加引号!!!
$("#box").css({
"top":dy,"left":dx
})


完整代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>弹出层,移动</title>
	<script src="jq11.js"></script>
	<script>
		//x,y为鼠标离控件左上角的相对位置 
		var x=0;
		var y=0;
		var flag=false;
		$(document).ready(function(){
			$("button").click(function(){
				$("#box").show();
			})
			
			$("h3").mousedown(function(event){
				//判断鼠标左键
				if(event.which==1){
					flag=true;
					
					x=event.pageX-parseInt($("#box").css("left"));
					y=event.pageY-parseInt($("#box").css("top"));
				}
			})

			$("h3").mousemove(function(event){
				if(flag){
					//dx,dy鼠标移动的距离
					var dx=0;
					var dy=0;

					dx=event.pageX-x;
					dy=event.pageY-y;
					//不要加引号!!!
					$("#box").css({
						"top":dy,"left":dx
					})	
				}		
				
			})

			$("h3").mouseup(function(event) {
				flag=false;
			});

			$("span").click(function(){
				$("#box").hide();
				//关闭之后,应返回原来的位置
				$("#box").css({
					top:120,left:120
				})	
			})
		})

	</script>
</head>
<style type="text/css">
	*{margin:0px;
		padding: 0px;}
	body{
		font-size: 14px;
		padding: 100px;
	}
	#box{
		width:500px;
		height:400px;
		border:3px ridge #ccc;
		display: none;
		box-shadow: 2px 2px 20px #888888;
		position:absolute;
		top:120px;
		left:120px;
	}
	#box h3{
		height:30px;
		line-height: 30px;
		background-color: #ABCDEF;
		padding-left: 10px;
		padding-right:10px;
		color: white;
		cursor: move;
	}
	#box span{
		float: right;
		font-size: 12px;
		cursor: pointer;
		color:red;
	}
	#box p{
		height:350px;
		padding: 10px;
		box-shadow: 3px 3px 10px #aaa inset;
		background: #FAFAFA;
	}
</style>
<body>
	<button>弹出</button>
	<div id="box">
		<h3><span>关闭</span>鼠标左键拖动</h3>
		<hr/>
		<p>有点小问题,不能快速的拖动,慢慢拖吧。。。以后有时间修改</p>
		
	</div>
</body>
</html>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值