您的位置:首页 > 编程语言

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

2008-05-11 20:54 513 查看
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.csdn.net/whqcfp target=_blank>http://blog.csdn.net/whqcfp</a><br>我的 BLOG:<br><a href=http://blog.csdn.net/whqcfp target=_blank>http://blog.csdn.net/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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: