建站极客
网络编程 JavaScript 正文
javascript div 弹出可拖动窗口
所属分类:
网络编程 / JavaScript
阅读数:
1979
收藏 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); }
纯javascript判断查询日期是否为有效日期 很多网站都涉及到输入日期选项,如果客户日期输入错误,可能导入查询不到甚至查询到错误的信息,为了更好的满足用户需求,需要对日期进行校验,下面给大家介绍使用纯javascript如何判断查询日期是否为有效日期,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
jquery实现的蓝色二级导航条效果代码 这篇文章主要介绍了jquery实现的蓝色二级导航条效果代码,涉及jquery鼠标事件及页面样式的动态切换效果实现技巧,非常简单实用,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
ajax如何实现页面局部跳转与结果返回 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新,本篇文章给大家介绍ajax如何实现页面局部跳转与结果返
评论 0
收藏 0
赞 0
分享
js实现的黑背景灰色二级导航菜单效果代码 这篇文章主要介绍了js实现的黑背景灰色二级导航菜单效果代码,涉及javascript操作页面元素动态切换的实现技巧,非常具有实用价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
javascript中SetInterval与setTimeout的定时器用法 Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等,本文文章通过代码示例给大家介绍javascript中SetInterval与setT
评论 0
收藏 0
赞 0
分享
jQuery实现的背景动态变化导航菜单效果 这篇文章主要介绍了jQuery实现的背景动态变化导航菜单效果,涉及jquery页面元素背景动态变换的实现技巧,非常具有实用价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
查看更多