由于每次我自己都要忘记这个东西,所以我还是记录下来比较好。趁现在记得着..
以前写过拖动div的效果,那个是对于文档父类的,只需要绝对定位坐标就可以拖动,这次写的是对于窗口的相对坐标拖动。
这图有毒..
<style>
*{
margin:0;
padding:0;
}
#warp{
background-color:#00a0d2;
width:400px;
height:400px;
margin:50px 100px;
position:relative;
}
#move{
width:50px;
height:50px;
background-color: #18cb2e;
position:absolute;
cursor:grab;
}
</style>
<div id="warp">
<div id="move">
</div>
</div>
<script>
$(function(){
$("#move").mousedown(function(e){
var offset = $(this).offset();//获取offset信息
//使用event属性获取鼠标离文档左侧距离减去元素左侧距离距离,y则为文档上方
var x = e.clientX - offset.left;
var y = e.clientY - offset.top;
//绑定移动事件
$("#warp").bind("mousemove",function(ev){
//停止浏览器默认事件
$(this).stop();
//同样获取当前移动的元素offset信息
var offsets = $(this).offset(),
move_x = ev.clientX - x,//这里减去鼠标按下获取的x值
move_y = ev.clientY - y,//同样
//上面2步的意思是让在拖动的时候鼠标不会瞬间移动(违和感)
//获取相对位置
xx = move_x-offsets.left,
yy = move_y-offsets.top,
w = $(this).width()-$("#move").width(),//计算最大x
h = $(this).height()-$("#move").height();//计算最大y
if(xx<=0||yy<=0||xx>w||yy>h){//判断是否在warp里面移动
return false;
}
//设置元素位置
$("#move").css({left:xx+"px",top:yy+"px"},0);
});
});
//解除绑定
$(document).mouseup(function(){
$("#warp").unbind("mousemove");
})
})
</script>
解释全在注释里面,别忘记导入jq库哦
1条评论登录后可见