`

html可以移动的浮动窗口

阅读更多

先看例子:

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

  • 大小: 59.8 KB
  • 大小: 2.6 KB
3
1
分享到:
评论
3 楼 hw1287789687 2017-02-13  
蒙奇君杰 写道
谢谢了!挺有用的

能帮到你很开心
2 楼 蒙奇君杰 2017-02-08  
谢谢了!挺有用的

相关推荐

    一个浮动广告的html代码

    一个浮动广告的html代码,有助于网站建设,广告联盟,网络赚钱,等等

    6种浮动提示框,弹出窗口,JS代码

    总共有6种浮动提示框,鼠标移动图片或者文字上,会有浮动的提示窗口跟随,跟随鼠标移动,图片部分区域提示等都有

    JS实现可根据窗口自适应跳转悬浮移动窗口(悬浮广告)的特效代码

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;,并且可以根据用户滚动窗口时,悬浮广告自适应窗口,在很多网站做活动需要悬浮广告时...

    html属性参考大全

    HTML 标记(Tag)的索引 页面(Page) 文件结构 ...浮动窗口 会移动的文字(Marquee) 基本语法 移动属性的设置 外观设置 多媒体页面(Alternative Inline Elements) 嵌入多媒体文本 背景音乐 视频剪辑

    HTML教程(图文并茂)

    HTML入门教程(图文并茂 版) 页面 文件结构 语言字符集信息 背景色彩和文字色彩 ... 浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑

    HTML 语言教程HTML电子书

    HTML 标记(Tag)的索引(Index) 页面(Page) 字体(Font) 文字布局(Text Style) 图象(Image) ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑

    HTML完全手册.chm(初学者必看)

    附目录: 页面 文件结构 语言字符集信息 背景色彩和文字色彩 页面空白 链接 ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑

    清华大学图书馆主页 - INTERNET 教室 - HTML 语言教程

    和传智播客韩顺平老师的推荐查询的手册一样 详细目录 页面 文件结构 语言字符集信息 背景色彩和文字色彩 ...浮动窗口 会移动的文字 基本语法 移动属性的设置 外观设置 多媒体页面 嵌入多媒体文本 背景音乐 视频剪辑

    C# WinForm 不规则透明界面美化 效果 DEMO

     功能:透明界面美化, 透明按钮切换,用户信息传递,最大化,最小化,关闭,移动窗口,定时器,弹窗,页面传值 3右下角浮动弹窗 功能:透明界面美化, 透明按钮切换,关闭,移动窗口,页面传值 详细 :...

    vue实现移动端悬浮窗效果

    touchmove 当在屏幕上移动手指时触发 touchend 当在屏幕上抬起手指时触发 mousedown mousemove mouseup对应的是PC端的事件 touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的...

    弹出可移动的层,有多种弹出方式

    &lt;TITLE&gt; JS弹出浮动层窗口_演示_www.codefans.net &lt;/TITLE&gt; function ShowIframe() //显示iframe { var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:500}); pop.setContent...

    web在线广告管理系统

    3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...

    在线广告管理系统 v1.1 加强版

    3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...

    创佳在线广告管理系统 v1.1 加强版.zip

    3、支持包括HTML代码显示、普通显示、满屏浮动显示、上下浮动显示-右、上下浮动显示-左、全屏幕渐隐消失、普通网页对话框、可移动透明对话框、打开新窗口、弹出新窗口、对联式广告等11种广告效果; 4、支持限制广告...

    div的position属性

    如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。 div{ width:200px; height:200px; border:2px red solid; position:absolute; left:100px; top:50px; } &lt;div id="div1"&gt;&lt;/div&gt; 效果...

    仿京东商城购物系统正式版

    设置是否显示浮动客服窗口,同时可以设置透明度 在线客服账户管理:支持多个QQ、MSN、旺旺、Skype 设置是否显示53kf客服窗口 设置是否显示:流量信息、报价单、发货单、赠品、优惠券、管理进入链接等 2)邮件...

    网页按钮操作2

    网页按钮的操作2,包括各种用途的按钮、会缩小放大的按钮、控制窗口移动的按钮、控制选择框个数、立体变换的按钮、连接说明浮动条脚本、链接处变换色彩、浏览器全屏显示、前进后退按钮、闪烁的按钮、鼠标抖动的按钮...

Global site tag (gtag.js) - Google Analytics