源代码:用层DIV模拟的类似C/S模式下的小窗口(可以拖动,展开关闭)

本文介绍了一种使用JScript实现的可拖动、可最小化的网页窗口效果,适用于WEB开发中模拟C/S应用的小窗口功能。代码简洁易懂,通过设置CSS样式及事件处理实现了窗口的拖动与状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  WEB开发时常用的代码,可以模拟 C/S模式下的小窗口,可以拖动,展开关闭(最小化),用JScript 写的,调用简单,一看就明白。
<html> <head>     <title>用层DIV模拟的小窗口(可以拖动,展开关闭)</title>     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">     <style type='text/css'>          <!--          body{font-size:12px;}          a:visited{text-decoration:none;color:slategray;}          a:hover{text-decoration:underline;color:slategray;}          a:link{text-decoration:none;color:slategray;}          -->      </style>     <script language="JScript">          <!--          //可以打包为js文件;          var x0=0,y0=0,x1=0,y1=0        var offx=6,offy=6        var moveable=false        var hover='orange',normal='#336699';//color;          var index=10000;//z-index;          //开始拖动;          function startDrag(obj)                      if(event.button==1                            //锁定标题栏;                  obj.setCapture();                                   //定义对象;                  var win = obj.parentNode;                  var sha = win.nextSibling;                                   //记录鼠标和层位置;                  x0 = event.clientX;                  y0 = event.clientY;                  x1 = parseInt(win.style.left);                  y1 = parseInt(win.style.top);                                   //记录颜色;                  normal = obj.style.backgroundColor;                                   //改变风格;                  obj.style.backgroundColor = hover;                  win.style.borderColor = hover;                  obj.nextSibling.style.color = hover;                  sha.style.left = x1 + offx;                  sha.style.top = y1 + offy;                                   moveable = true            }          }                            //拖动;          function drag(obj)                      if(moveable)                              var win = obj.parentNode;                  var sha = win.nextSibling;                                   win.style.left = x1 + event.clientX - x0;                  win.style.top = y1 + event.clientY - y0;                  sha.style.left = parseInt(win.style.left) + offx;                  sha.style.top = parseInt(win.style.top) + offy;              }          }          //停止拖动;          function stopDrag(obj)                      if(moveable)                              var win = obj.parentNode;                  var sha = win.nextSibling;                  var msg = obj.nextSibling;                                   win.style.borderColor = normal;                  obj.style.backgroundColor = normal;                  msg.style.color = normal;                  sha.style.left = obj.parentNode.style.left;                  sha.style.top = obj.parentNode.style.top;                  obj.releaseCapture();                                   moveable = false            }          }                            //获得焦点;          function getFocus(obj)                      if(obj.style.zIndex!=index)                              index = index + 2                var idx = index;                                   obj.style.zIndex=idx;                  obj.nextSibling.style.zIndex=idx-1            }          }          //最小化;          function min(obj)                      var win = obj.parentNode.parentNode;              var sha = win.nextSibling;              var tit = obj.parentNode;              var msg = tit.nextSibling;              var flg = msg.style.display=="none"                         if(flg)                              win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2                sha.style.height = win.style.height;                  msg.style.display = "block"                obj.innerHTML = "0"            }              else                              win.style.height = parseInt(tit.style.height) + 2*2                sha.style.height = win.style.height;                  obj.innerHTML = "2"                msg.style.display = "none"            }          }          //创建一个对象;          function xWin(id,w,h,l,t,tit,msg)                      index = index+2                         this.id = id;              this.width = w;              this.height = h;              this.left = l;              this.top = t;              this.zIndex = index;              this.title = tit;              this.message = msg;              this.obj = null            this.bulid = bulid;                           this.bulid();          }          //初始化;          function bulid()                      var str = ""              + "<div id=xMsg" + this.id + " "              + "style='"              + "z-index:" + this.zIndex + ";"              + "width:" + this.width + ";"              + "height:" + this.height + ";"              + "left:" + this.left + ";"              + "top:" + this.top + ";"              + "background-color:" + normal + ";"              + "color:" + normal + ";"              + "font-size:8pt;"              + "font-family:Tahoma;"              + "position:absolute;"              + "cursor:default;"              + "border:2px solid " + normal + ";"              + ""              + "onmousedown='getFocus(this)'>"              + "<div "              + "style='"              + "background-color:" + normal + ";"              + "width:" + (this.width-2*2+ ";"              + "height:20;"              + "color:white;"              + ""              + "onmousedown='startDrag(this)' "              + "onmouseup='stopDrag(this)' "              + "onmousemove='drag(this)' "              + "ondblclick='min(this.childNodes[1])'"              + ">"              + "<span style='width:" + (this.width-2*12-4+ ";padding-left:3px;'>" + this.title + "</span>"              + "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>"              + "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='ShowHide(""+this.id+"",null)'>r</span>"              + "</div>"              + "<div style='"              + "width:100%;"              + "height:" + (this.height-20-4+ ";"              + "background-color:white;"              + "line-height:14px;"              + "word-break:break-all;"              + "padding:3px;"              + "'>" + this.message + "</div>"              + "</div>"              + "<div id=xMsg" + this.id + "bg style='"              + "width:" + this.width + ";"              + "height:" + this.height + ";"              + "top:" + this.top + ";"              + "left:" + this.left + ";"              + "z-index:" + (this.zIndex-1+ ";"              + "position:absolute;"              + "background-color:black;"              + "filter:alpha(opacity=40);"              + "'></div>"            document.body.insertAdjacentHTML("beforeEnd",str);          }                            //显示隐藏窗口          function ShowHide(id,dis)                     var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis                           document.getElementById("xMsg"+id).style.display = bdisplay;              document.getElementById("xMsg"+id+"bg").style.display = bdisplay;          }      //-->      </script>     <script language='JScript'>      <!--          function initialize()                      var a = new xWin("1",160,200,200,200,"窗口1","~~~~~ <br> 第一个窗口<br><br>");              var b = new xWin("2",240,200,100,100,"窗口2","第二个窗口,可以最小化或关闭窗口<br><a href=http://blog.youkuaiyun.com/whqcfp target=_blank>http://blog.youkuaiyun.com/whqcfp</a><br>我的 BLOG:<br><a href=http://blog.youkuaiyun.com/whqcfp target=_blank>http://blog.youkuaiyun.com/whqcfp</a><br><br>...");              var c = new xWin("3",200,160,250,50,"窗口3","有意思吧?! <a href='mailto:wanghq_lanzhou@163.com'>写信给我!</a>!");                           ShowHide("2","none");//隐藏窗口1          }                   window.onload = initialize;      //-->      </script> </head> <body onselectstart='return false' oncontextmenu='return false'>     <a onclick="ShowHide('1',null);return false;" href="">窗口1</a> <a onclick="ShowHide('2',null);return false;"         href="">窗口2</a> <a onclick="ShowHide('3',null);return false;" href="">窗口3</a> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值