源代码:用层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 + ";"              + ""              + "οnmοusedοwn='getFocus(this)'>"              + "<div "              + "style='"              + "background-color:" + normal + ";"              + "width:" + (this.width-2*2+ ";"              + "height:20;"              + "color:white;"              + ""              + "οnmοusedοwn='startDrag(this)' "              + "οnmοuseup='stopDrag(this)' "              + "οnmοusemοve='drag(this)' "              + "οndblclick='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;' οnclick='min(this)'>0</span>"              + "<span style='width:12;border-width:0px;color:white;font-family:webdings;' οnclick='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、付费专栏及课程。

余额充值