建站极客
网络编程 JavaScript 正文
javascript div 弹出可拖动窗口
所属分类:
网络编程 / JavaScript
阅读数:
1990
收藏 0
赞 0
分享
/* * 创建弹出div窗口。 1、接口说明:DivWindow(id,title,width,height,content) 构造函数,创建一个弹出窗口对象 参数:id 弹出窗口id; title:弹出窗口标题名称; width:弹出窗口宽度 height:弹出窗口高度 content: 弹出窗口显示内容 2、接口说明: closeDivWindow(id) 关闭窗口 参数: id 弹出窗口id 3、接口说明:setPopupTopTitleFontColor(PopupTopTitleFontColor) 设置弹出窗口标题字体颜色 参数: 4、接口说明:setPopupTopBgColor(tBgColor) 设置弹出窗口标题背景颜色 5、接口说明:setPopupColor(borderColor,bgColor,tFontColor,cBgColor,fColor) 设置弹出窗口风格,包括标题栏的背景,弹出窗口边框颜色,内容窗体背景颜色,内容窗体字体颜色 6、接口说明:open() 使用方法: var a = new DivWindow("1","窗口测试",580,400,"Welcome to visited my personal website:<br><a href=http://www.qqview.com target=_blank>http://www.qqview.com</a><br><ahref=http://www ... qqview.com</a><br><br>thx!!!=)..."L); a.setPopupTopBgColor("black","blue","white","white","black"); a.open(); 生成的html: <div id='"window"+id'></div> 控制背景的div,使背景逐渐变暗 <div id='"windowTopBg"+id'> <div id='"windowTop"+id'> <span id='"windowTopTitle"+id'>title</span> <span id='"windowTopOperate"+id'>maxORmin</span> <span id='"windowTopClose"+id'>close</span> </div> <div id='"windowContent"+id'>content</div> </div> @author Nieger Dai @date 2007.11.15 */ var isIe = (document.all)?true:false; var moveable=false; var topDivBorderColor = "#336699";//提示窗口的边框颜色 var topDivBgColor = "#6795B4";//提示窗口的标题的背景颜色 var contentBgColor = "white";//内容显示窗口的背景颜色 var contentFontColor = "black";//内容显示窗口字体颜色 var titleFontColor = "white"; //弹出窗口标题字体颜色 var index=10000;//z-index; // 创建弹出窗口,构造函数 function DivWindow(id,title,w,h,content) { this.id = id;//窗口id this.zIndex = index +2; this.title = title;//弹出窗口名称 this.message = content;//弹出窗口内容 this.width = w;//弹出窗口宽度 this.height = h;//弹出窗口高度 this.left = (document.body.clientWidth) ? (document.body.clientWidth - this.width)/2 : 0;//弹出窗口位置,距屏幕左边的位置 this.top = (document.body.clientHeight) ? (document.body.clientHeight - this.height)/2 : 0;//弹出窗口位置,距屏幕上边的位置 //this.init = init; //this.init(); } //根据构造函数设定初始值,创建弹出窗口 DivWindow.prototype = { //设置弹出窗口标题字体颜色 setPopupTopTitleFontColor:function(tFontColor) { titleFontColor = tFontColor; }, //设置弹出窗口标题背景颜色 setPopupTopBgColor:function(tBgColor) { topDivBgColor = tBgColor; }, //设置弹出窗口风格,包括标题栏的背景,弹出窗口边框颜色,内容窗体背景颜色,内容窗体字体颜色 setPopupColor:function(borderColor,bgColor,tFontColor,cBgColor,fColor) { topDivBorderColor = borderColor; topDivBgColor = bgColor; titleFontColor = tFontColor; contentBgColor = cBgColor; contentFontColor = fColor; }, //打开一个弹出窗口 open: function() { var sWidth,sHeight; sWidth=document.body.clientWidth; sHeight=document.body.clientHeight; var bgObj=document.createElement("div"); bgObj.setAttribute('id','window'+this.id); var styleStr="top:0px;left:0px;position:absolute;background:#245;width:"+sWidth+"px;height:"+sHeight+"px;"; styleStr+=(isIe)?"filter:alpha(opacity=0);":"opacity:0;"; bgObj.style.cssText=styleStr; document.body.appendChild(bgObj); //让背景逐渐变暗 showBackground(bgObj,25); // 弹出窗口框体背景容器 var windowTopBgDiv = document.createElement("div"); windowTopBgDiv.setAttribute('id','windowTopBg'+this.id); windowTopBgDiv.style.position = "absolute"; windowTopBgDiv.style.zIndex = this.zIndex ; windowTopBgDiv.style.width = this.width ; windowTopBgDiv.style.height = this.height; windowTopBgDiv.style.left = this.left; windowTopBgDiv.style.top = this.top; windowTopBgDiv.style.background = topDivBgColor; windowTopBgDiv.style.fontSize = "9pt"; windowTopBgDiv.style.cursor = "default"; windowTopBgDiv.style.border = "1px solid " + topDivBorderColor; windowTopBgDiv.attachEvent("onmousedown",function(){ if(windowTopBgDiv.style.zIndex!=index) { index = index + 2; var idx = index; windowTopBgDiv.style.zIndex=idx; } }); // 弹出窗口头部框体 var windowTopDiv = document.createElement("div"); windowTopDiv.setAttribute('id','windowTop'+this.id); windowTopDiv.style.position = "absolute"; windowTopDiv.style.background = topDivBgColor;//"white"; windowTopDiv.style.color = titleFontColor; windowTopDiv.style.cursor = "move"; windowTopDiv.style.height = 20; windowTopDiv.style.width = this.width-2*2; //开始拖动; windowTopDiv.attachEvent("onmousedown",function(){ if(event.button==1) { //锁定标题栏; windowTopDiv.setCapture(); //定义对象; var win = windowTopDiv.parentNode; //记录鼠标和层位置; x0 = event.clientX; y0 = event.clientY; x1 = parseInt(win.style.left); y1 = parseInt(win.style.top); //记录颜色; //topDivBgColor = windowTopDiv.style.backgroundColor; //改变风格; //windowTopDiv.style.backgroundColor = topDivBorderColor; win.style.borderColor = topDivBorderColor; moveable = true; } }); //停止拖动 windowTopDiv.attachEvent("onmouseup",function(){ if(moveable) { var win = windowTopDiv.parentNode; win.style.borderColor = topDivBgColor; windowTopDiv.style.backgroundColor = topDivBgColor; windowTopDiv.releaseCapture(); moveable = false; } }); // 开始拖动 windowTopDiv.attachEvent("onmousemove",function(){ if(moveable) { var win = windowTopDiv.parentNode; win.style.left = x1 + event.clientX - x0; win.style.top = y1 + event.clientY - y0; } }); // 双击弹出窗口 windowTopDiv.attachEvent("ondblclick",function(){ maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv); }); //增加一个弹出窗口标题的显示 var windowTopTitleSpan = document.createElement("span"); windowTopTitleSpan.setAttribute('id','windowTopTitle'+this.id); windowTopTitleSpan.style.width = this.width-2*12-4; windowTopTitleSpan.style.paddingLeft = "3px"; windowTopTitleSpan.innerHTML = this.title; //增加一个弹出窗口最小化,最大化的操作 var windowTopOperateSpan = document.createElement("span"); windowTopOperateSpan.setAttribute('id','windowTopOperate'+this.id); windowTopOperateSpan.style.width = 12; windowTopOperateSpan.style.borderWidth = "0px"; windowTopOperateSpan.style.color = titleFontColor;//"white"; windowTopOperateSpan.style.fontFamily = "webdings"; windowTopOperateSpan.style.cursor = "default"; windowTopOperateSpan.innerHTML = "0"; //最大化或者最小化弹出窗口操作 windowTopOperateSpan.attachEvent("onclick",function(){ maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv); }); //增加一个弹出窗口关闭的操作 var windowTopCloseSpan = document.createElement("span"); windowTopCloseSpan.setAttribute('id','windowTopClose'+this.id); windowTopCloseSpan.style.width = 12; windowTopCloseSpan.style.borderWidth = "0px"; windowTopCloseSpan.style.color = titleFontColor;//"white"; windowTopCloseSpan.style.fontFamily = "webdings"; windowTopCloseSpan.style.cursor = "default"; windowTopCloseSpan.innerHTML = "r"; // 关闭窗口 windowTopCloseSpan.attachEvent("onclick",function(){ windowTopDiv.removeChild(windowTopTitleSpan); windowTopDiv.removeChild(windowTopOperateSpan); windowTopDiv.removeChild(windowTopCloseSpan); windowTopBgDiv.removeChild(windowTopDiv); windowTopBgDiv.removeChild(windowContentDiv); document.body.removeChild(windowTopBgDiv); document.body.removeChild(bgObj); }); // 内容 var windowContentDiv = document.createElement("div"); windowContentDiv.setAttribute('id','windowContent'+this.id); windowContentDiv.style.background = contentBgColor; windowContentDiv.style.color = contentFontColor; windowContentDiv.style.cursor = "default"; windowContentDiv.style.height = (this.height - 20 - 4); windowContentDiv.style.width = "100%"; windowContentDiv.style.position = "relative"; windowContentDiv.style.left = 0; windowContentDiv.style.top = 24; windowContentDiv.style.lineHeight = "20px"; windowContentDiv.style.fontSize = "10pt"; windowContentDiv.style.wordBreak = "break-all"; windowContentDiv.style.padding = "3px"; windowContentDiv.innerHTML = this.message; //将内容写入到文件中 windowTopDiv.appendChild(windowTopTitleSpan); windowTopDiv.appendChild(windowTopOperateSpan); windowTopDiv.appendChild(windowTopCloseSpan); windowTopBgDiv.appendChild(windowTopDiv); windowTopBgDiv.appendChild(windowContentDiv); document.body.appendChild(windowTopBgDiv); } } //最大或者最小化探出窗口 function maxOrMinPopupDiv(windowTopOperateSpan,windowContentDiv) { var win = windowTopOperateSpan.parentNode.parentNode; var tit = windowTopOperateSpan.parentNode; var flg = windowContentDiv.style.display=="none"; if(flg) { win.style.height = parseInt(windowContentDiv.style.height) + parseInt(tit.style.height) + 2*2; windowContentDiv.style.display = "block"; windowTopOperateSpan.innerHTML = "0"; } else { win.style.height = parseInt(tit.style.height) + 2*2; windowTopOperateSpan.innerHTML = "2"; windowContentDiv.style.display = "none"; } } //让背景渐渐变暗 function showBackground(obj,endInt) { if(isIe) { obj.filters.alpha.opacity+=1; if(obj.filters.alpha.opacity<endInt) { setTimeout(function(){this.showBackground(obj,endInt)},5); } } else { var al=parseFloat(obj.style.opacity);al+=0.01; obj.style.opacity=al; if(al<(endInt/100)) { setTimeout(function(){this.showBackground(obj,endInt)},5); } } } //关闭弹出窗口 function closeDivWindow(id) { var windowTopTitleSpan = document.getElementById("windowTopTitle"+id); var windowTopOperateSpan = document.getElementById("windowTopOperate"+id); var windowTopCloseSpan = document.getElementById("windowTopClose"+id); var windowTopDiv = document.getElementById("windowTop"+id); var windowTopBgDiv = document.getElementById("windowTopBg"+id); var windowContentDiv = document.getElementById("windowContent"+id); var bgObj = document.getElementById("window"+id); windowTopDiv.removeChild(windowTopTitleSpan); windowTopDiv.removeChild(windowTopOperateSpan); windowTopDiv.removeChild(windowTopCloseSpan); windowTopBgDiv.removeChild(windowTopDiv); windowTopBgDiv.removeChild(windowContentDiv); document.body.removeChild(windowTopBgDiv); document.body.removeChild(bgObj); }
ES6中Array.find()和findIndex()函数的用法详解 ES6为Array增加了find(),findIndex函数。find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined,而findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。下面通过实例详解,需要的朋友参考下吧
评论 0
收藏 0
赞 0
分享
JS闭包的几种常见形式实例详解 本文通过实例代码给大家详细介绍了js闭包的几种常见形式,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下
评论 0
收藏 0
赞 0
分享
Javascript 严格模式use strict详解 严格模式:由ECMA-262规范定义的JavaScript标准,对javascrip的限制更强。这篇文章主要介绍了Javascript 严格模式use strict详解 ,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
引入JavaScript时alert弹出框显示中文乱码问题 今天在HTML中引入JavaScript文件运行时,alert弹出的提示框中文显示为乱码,怎么解决此问题呢?下面小编给大家带来了引入JavaScript时alert弹出框显示中文乱码问题的解决方法,一起看看吧
评论 0
收藏 0
赞 0
分享
Angularjs自定义指令实现分页插件(DEMO) 由于最近的一个项目使用的是angularjs1.0的版本,涉及到分页查询数据的功能,后来自己就用自定义指令实现了该功能,下面小编把实例demo分享到脚本之家平台,需要的朋友参考下
评论 0
收藏 0
赞 0
分享
查看更多