先看例子:
http://182.92.97.72/float_suspend/
效果描述:
(1) 鼠标点击" "即可拖动;
(2)滚动网页的竖直滚动条时,该窗口的位置固定不变;
(3)无论怎么移动,该窗口不会跑到网页可视范围之外
关键code:
// 拖拽效果 function drag(){ var tags = arguments; // alert(tags[0].length);//长度为4 for(var i=0;i<tags[0].length;i++){ // addEvent(tags[0].get(i),'mousedown',function(e){ $(tags[0].get(i)).bind('mousedown',function(e){ if(trim(this.innerHTML).length == 0) e.preventDefault(); var _this = this; // var diffX = e.clientX - _this.offsetLeft; // var diffY = e.clientY - _this.offsetTop; var diffX = e.clientX - $(_this).parent().get(0).offsetLeft; var diffY = e.clientY - $(_this).parent().get(0).offsetTop; //自定义拖拽区域 var flag = false; for (var i = 0; i < tags[0].length; i ++) { if (e.target == tags[0].get(i)) { flag = true; //只要有一个是true,就立刻返回 break; } } if (flag) { $(document).bind('mousemove',move); $(document).bind('mouseup',up); } else { $(document).unbind('mousemove',move); $(document).unbind('mousemove',up); } function move(e) { $('div.suspend').css("position", 'absolute');//保证移动div的标题时,div跟着移动 scrollTop22=document.body.scrollTop; if(isIEtest && scrollTop22==0){//IE中 scrollTop22=document.documentElement.scrollTop; } //alert(); var left = e.clientX - diffX; var old_top = e.clientY - diffY; var top=old_top+scrollTop22; //console.log(old_top+"\t"+scrollTop22); var divWidth22=$(_this).parent().get(0).offsetWidth;//div 的宽度 var screenWidth=document.body.clientWidth;//屏幕宽度,不兼容IE if(isIEtest ){//IE中,isIEtest的初始化在common_util.js 中 screenWidth=document.documentElement.clientWidth;//屏幕宽度 } //console.log(left+"\t"+screenWidth); var rightZero=(screenWidth-divWidth22)-left; if(rightZero<0)//防止div跑到窗口的右边之外 { left+=rightZero; } if (left < 0) { left = 0; }else if(left <= getScroll().left){ left = getScroll().left; } else if (left > getInner().width + getScroll().left - $(_this).parent().get(0).offsetWidth) { left = getInner().width + getScroll().left- $(_this).parent().get(0).offsetWidth; } if (top < 0) { top = 0; }else if(top <= getScroll().top){ top = getScroll().top } else if (top > getInner().height + getScroll().top - $(_this).parent().get(0).offsetHeight) { top = getInner().height + getScroll().top - $(_this).parent().get(0).offsetHeight; } $(_this).parent().get(0).style.left = left + 'px'; $(_this).parent().get(0).style.top = top + 'px'; //$(_this).parent().get(0).style.bottom= (50+old_top)+ 'px'; if (typeof _this.setCapture != 'undefined') { _this.setCapture(); } } function up(e) { $('div.suspend').css("position", 'fixed');//保证上下移动滚动条时div保持不变,所以必须恢复为fixed var event_clientY=e.clientY; var top =event_clientY - diffY; var screenHight=document.body.clientHeight;//屏幕高度,不兼容IE if(isIEtest ){//IE中,isIEtest的初始化在common_util.js 中 screenHight=document.documentElement.clientHeight;//屏幕高度 } var divHeight22=$(_this).parent().get(0).offsetHeight;//div 的高度 //console.log(event_clientY+"\t "+diffY+"\t"+screenHight+"\t"+divHeight22+"\t"+document.body.scrollTop ); var bottomZero=screenHight-divHeight22+diffY; //console.log(bottomZero+"\t"+top); if(event_clientY>bottomZero){//防止div跑到bottom以下,防止div跑出窗口之下 //alert(111); top-=(event_clientY-bottomZero); } if(top<0)//top为负数,就表示div拖拽到窗口之上了 { top=0;//防止div跑出窗口之上 } $(_this).parent().get(0).style.top = top + 'px';//解决鼠标松开时位置突变的不正常现象 $(document).unbind('mousemove',move); $(document).unbind('mouseup',up); if (typeof _this.releaseCapture != 'undefined') { _this.releaseCapture(); } } }); }
源代码见附件float_suspend.zip
参考:http://huangkunlun520.blog.51cto.com/2562772/1570707
相关推荐
一个浮动广告的html代码,有助于网站建设,广告联盟,网络赚钱,等等
总共有6种浮动提示框,鼠标移动图片或者文字上,会有浮动的提示窗口跟随,跟随鼠标移动,图片部分区域提示等都有
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,并且可以根据用户滚动窗口时,悬浮广告自适应窗口,在很多网站做活动需要悬浮广告时...
HTML 标记(Tag)的索引 页面(Page) 文件结构 ...浮动窗口 会移动的文字(Marquee) 基本语法 移动属性的设置 外观设置 多媒体页面(Alternative Inline Elements) 嵌入多媒体文本 背景音乐 视频剪辑
HTML入门教程(图文并茂 版) 页面 文件结构 语言字符集信息 背景色彩和文字色彩 ... 浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑
HTML 标记(Tag)的索引(Index) 页面(Page) 字体(Font) 文字布局(Text Style) 图象(Image) ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑
附目录: 页面 文件结构 语言字符集信息 背景色彩和文字色彩 页面空白 链接 ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑
和传智播客韩顺平老师的推荐查询的手册一样 详细目录 页面 文件结构 语言字符集信息 背景色彩和文字色彩 ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑
功能:透明界面美化, 透明按钮切换,用户信息传递,最大化,最小化,关闭,移动窗口,定时器,弹窗,页面传值 3右下角浮动弹窗 功能:透明界面美化, 透明按钮切换,关闭,移动窗口,页面传值 详细 :...
touchmove 当在屏幕上移动手指时触发 touchend 当在屏幕上抬起手指时触发 mousedown mousemove mouseup对应的是PC端的事件 touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的...
<TITLE> JS弹出浮动层窗口_演示_www.codefans.net </TITLE> function ShowIframe() //显示iframe { var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:500}); pop.setContent...
3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...
3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...
3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...
如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。 div{ width:200px; height:200px; border:2px red solid; position:absolute; left:100px; top:50px; } <div id="div1"></div> 效果...
设置是否显示浮动客服窗口,同时可以设置透明度 在线客服账户管理:支持多个QQ、MSN、旺旺、Skype 设置是否显示53kf客服窗口 设置是否显示:流量信息、报价单、发货单、赠品、优惠券、管理进入链接等 2)邮件...
网页按钮的操作2,包括各种用途的按钮、会缩小放大的按钮、控制窗口移动的按钮、控制选择框个数、立体变换的按钮、连接说明浮动条脚本、链接处变换色彩、浏览器全屏显示、前进后退按钮、闪烁的按钮、鼠标抖动的按钮...