利用jquery写的无限弹出移动窗口,仿桌面窗口移动,原理很简单

无限弹出移动窗口,仿桌面窗口移动,主要应用了下列属性:

event.pageX:鼠标的x坐标;event.pageY:鼠标的y坐标

$('div.moveBar').offset().left:class为moveBar的div相对于浏览器窗口的左坐标

$('div.moveBar').offset().top:class为moveBar的div相对于浏览器窗口的左坐标

$(window).height():浏览器可视区域高度;$(window).width():浏览器可视区域宽度

在,js代码里面(js代码只有30行,简单易懂):

yidong(evt){}这个函数主要是控制窗口的移动,和创建的窗口再被电机鼠标时,被点击的窗口呈现在最上面。

通过jquery内的自带函数bind:$(".banner").bind("mousedown",yidong);将yidong这个功能函数绑定到class为banner的标签上,这样点击这个标签可以控制其父标签移动和呈现等功能

详细了解或者要下载压缩包源码可以进入http://www.unvco.com/forum.php?mod=viewthread&tid=2289

界面如下(为了减少代码量,这里没有美化):

代码如下:

<!DOCTYPE html>    
<html lang="zh">    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
<title>无限弹出移动窗口,仿桌面窗口移动</title>    
<script src="jquery-1.7.2.min.js" type="text/javascript"></script>    
<script>    
var i=1;    
jQuery(document).ready(function () {    

$('.button').click(function () {    

var div_width;var div_height;    

if($('.shuzhi_x').val()==""){div_width=200;}else{div_width=$('.shuzhi_x').val();}    

if($('.shuzhi_y').val()==""){div_height=200;}else{div_height=$('.shuzhi_y').val();}    

$("body").append("<div class='moveBar' style='position: absolute; width: "+div_width+"px; height:"+div_height+"px; background:#999; border: solid 1px #000;'> <div class='banner' onselectstart='javascript:return false;'>第<span style='color:#F00'>"+i+"</span>个生成窗口</div> <div class='content'>宽度:<span style='color:#F00'>"+div_width+"</span><br>高度:<span style='color:#F00'>"+div_height+"</span></div></div>");    

$(".banner").bind("mousedown",yidong);//每次生成后都要绑定事件到class为banner的标签上    

i++;    

});    

});    


function yidong(evt){//控制class为banner的父元素可以移动    

var evt = evt || window.event;    

var isMove = true;    

var abs_x = evt.pageX - $(this).parent().offset().left;    

var abs_y = evt.pageY - $(this).parent().offset().top;    

var parent_div_class="."+$(this).parent().attr("class");    

var move_div=this;    

$(parent_div_class).mousedown(function () {    

$(parent_div_class).css("z-index","");    

$(this).css("z-index","100");    

});//控制层的重叠    

$(document).mousemove(function (evt) {    

//$(move_div).parent().children('.content').html("x坐标:"+event.pageX+"+y坐标:"+event.pageY+"<br>div左边距:"+$(move_div).parent().offset().left+"+div上边距:"+$(move_div).parent().offset().top+"<br>可视宽度:"+$(window).width()+"+可视高度:"+$(window).height());    

if (isMove) {    

var moveBar_x=evt.pageX - abs_x;//移动后的x坐标    

var moveBar_y=evt.pageY - abs_y;//移动后的y坐标    

if(moveBar_x<10){moveBar_x=10;}    

if(moveBar_y<10){moveBar_y=10;}    

if(moveBar_x>$(window).width()-$(move_div).parent().width()-10){moveBar_x=$(window).width()-$(move_div).parent().width()-10;}    

//不能移出屏幕    

if(moveBar_y>$(window).height()-$(move_div).parent().height()-10){moveBar_y=$(window).height()-$(move_div).parent().height()-10;}    

$(move_div).parent().css({'left':moveBar_x, 'top':moveBar_y});    

}    

}).mouseup(function (){    

isMove = false;    

});    

}    

</script>    

<style type="text/css">    

<!--    

body {margin-left: 0px;}    

.moveBar{position: absolute; width: 300px; height:300px; background:#999; border: solid 1px #000;}    

.banner{background: #52CCCC; cursor: move;}    

-->    

</style></head>    

<body>    

<input class="button" name="" type="button" value="添加移动框">宽度<input name="" type="text" class="shuzhi_x">高度<input name="" type="text" class="shuzhi_y">    

<div>event.pageX:鼠标的x坐标<br>    

event.pageY:鼠标的y坐标<br>    

$('div.moveBar').offset().left:class为moveBar的div相对于浏览器窗口的左坐标<br>    

$('div.moveBar').offset().top:class为moveBar的div相对于浏览器窗口的左坐标<br>    

$(window).height():浏览器可视区域高度<br>    

$(window).width():浏览器可视区域宽度<br>    

下载附件后,请自己下jquery-1.7.2.min.js文件。<br>附件内不带jquery-1.7.2.min.js文件。    
</div>    
</body>    
</html> 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值