html+css+js实现xp window界面及有关功能

注意: 该程序在IE调试的,其他浏览器可能有BUG,见谅!





<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB2312">

<title>Insert title here</title>

	<!-- 

	  -- CSS  

	  -- set window style

	  -->

	<link rel="stylesheet" type="text/css" href="main.css" />

	

	<!--  

	  -- JavaScript

	  -- set function

	  -->

	<script language="JavaScript" src="mywindow.js"> </script>

	<script>

		alert("XP Window以IE测试,其他浏览器可能有BUG请见谅! 基本功能+四边四角顶部拖拉都已实现!")

		alert("进行操作前,记得先初始化窗口哦!");

		

		/*

		 * create xp window and initialize

		 */

	    var myW = new MyWindow();

		function initialize() {

			myW.setBackgroundDiv("mywindow");

			myW.setLeftDiv("mywindow_left");

			myW.setRightDiv("mywindow_right");

			myW.setBottomDiv("mywindow_bottom");

			myW.setTopDiv("mywindow_top");

			myW.initialEvent();

		}

		

		/*

		 * list button event function

		 */

		function hiddenWindow() {

			myW.hidden();

		}

		

		function showWindow() {

			myW.show();

		}

		

		function setAdjust(adj) {

			myW.setAdjust(adj);

		}

		

		function showMaxSize() {

			myW.showMaxSize();

		}

		

		function getTop() {

			myW.getTop();

		}

		

		function getLeft() {

			myW.getLeft();

		}

		

		function getWidth() {

			myW.getWidth();

		}

		

		function getHeight() {

			myW.getHeight();

		}

		

		function removeWindow() {

			myW.removeWindow();

		}

		

		function addObject() {

			myW.addObject();

		}

		

		function deleteObject() {

			myW.deleteObject();

		}

		

		/*

		 * drag operation event function

		 */

		function start(idName) {

			myW.start(idName);

		}

		

		function move(idName) {

			myW.move(idName);

		}

		

		function end(idName) {

			myW.end(idName);

		}

		

	</script>

</head>

<body>

	<!-- 

	  -- set list button

	  -->

	<ul>

		<li><a href="#" onclick="initialize();">初始化窗口</a></li>

		<li><a href="#" onclick="hiddenWindow();">隐藏窗口</a></li> 

		<li><a href="#" onclick="showWindow();">显示窗口</a></li>

		<li><a href="#" onclick="setAdjust(true);">设置窗口可调整大小</a></li> 

		<li><a href="#" onclick="setAdjust(false);">设置窗口不可调整大小</a></li>

		<li><a href="#" onclick="showMaxSize();">最大化窗口</a></li>

		<li><a href="#" onclick="addObject();">在窗口中添加对象 </a></li>

		<li><a href="#" onclick="deleteObject();">删除对象</a></li>

		<li><a href="#" onclick="getTop();">得到Top的值</a></li>

		<li><a href="#" onclick="getLeft();">得到Left的值</a></li>

		<li><a href="#" onclick="getWidth();">得到Width的值</a></li>

		<li><a href="#" onclick="getHeight();">得到Height的值</a></li>

		<li><a href="#" onclick="removeWindow();">释放窗口资源</a></li>

	</ul><br>

	

	<!-- 

	  -- set every div of window

	  -- because cover proble, so order of set div is bottom, right/left, central, last top

	  -->

	<div id="mywindow">

		<!-- set bottom div -->

		<div id="mywindow_bottom">

			<div id="mywindow_botton_right_corner" onmousedown="start('mywindow_botton_right_corner');" 

				onmousemove="move('mywindow_botton_right_corner');"

				onmouseup="end('mywindow_botton_right_corner');">

			</div>

		</div>

		

		<!-- set right div -->

		<div id="mywindow_right" onmousedown="start('mywindow_right');" onmousemove="move('mywindow_right');"

			onmouseup="end('mywindow_right');">

		</div>

		

		<!-- set left div -->

		<div id="mywindow_left" onmousedown="start('mywindow_left');" onmousemove="move('mywindow_left');"

			onmouseup="end('mywindow_left')";>

		</div>

		

		<!-- set central div, it is added object -->

		<div id = "central"></div>

		

		<!-- set top div -->

		<div id="mywindow_top"  onmousedown="start('mywindow_top');" onmousemove="move('mywindow_top');"

			onmouseup="end('mywindow_top');">

			<div id="mywindow_top_left_corner">

			</div>

			<div id="mywindow_top_middle">

	        	<img class="button" id="top_close_button" src="image/window_control_close_blur.bmp"

				/>

				<img class="button" id="top_max_button" src="image/window_control_max_blur.bmp"

				/>

				<img class="button" id="top_min_button" src="image/window_control_min_blur.bmp"

				/>

			</div>

			<div id="mywindow_top_right_corner">

			</div>

		</div>

		

		<!-- set corner of drag window -->

		<div id="mywindow_right_corner" onmousedown="start('mywindow_right_corner');" onmousemove="move('mywindow_right_corner');"

			onmouseup="end('mywindow_right_corner');">	

		</div>

		<div id="mywindow_left_corner" onmousedown="start('mywindow_left_corner');" onmousemove="move('mywindow_left_corner');"

			onmouseup="end('mywindow_left_corner');">

		</div>

		<div id="mywindow_rBottom_corner" onmousedown="start('mywindow_rBottom_corner');" onmousemove="move('mywindow_rBottom_corner');"

			onmouseup="end('mywindow_rBottom_corner');">

		</div>

		

		<!-- set border of drag window -->

		<div id="mywindow_top_drag" onmousedown="start('mywindow_top_drag');" onmousemove="move('mywindow_top_drag');"

			onmouseup="end('mywindow_top_drag');"></div>

		<div id="mywindow_bottom_drag" onmousedown="start('mywindow_bottom_drag');" onmousemove="move('mywindow_bottom_drag');"

			onmouseup="end('mywindow_bottom_drag');"></div>

	</div>



</body>

</html>


 

/** 

 * set select button, use list as button

 */



/* set list button */

li {

	display: inline;

	white-space: nowrap;

	float: left;

	border: 0 solid white;

	border-right-width: 2px;

	border-bottom-width: 10px;

}



/* set <a> */

a {

	background-color: purple;

	color: white;

	text-decoration: none;

	padding: 4px 6px;

}

	

/* set <a>: hover */

a:hover {

	background-color: #FF5500;

}

		

/* 

 * set every div position

 */

div {

	position: absolute;

}

	

/**

 * set window

 */

#mywindow {

    background-image: url("image/window_bgImage.png");

	/* assign appear position */

	top: 100px;

	left: 200px;

	/* assign initialization size of window */

	width: 500px;

	height: 400px;

}



/**

 * set bottom div of window 

 */

#mywindow_bottom {

	background-image: url("image/window_bottom_middle_border.bmp");

	background-repeat: repeat-x;

	top: 374px;

	left: 0px;

	width: 100%;

	height: 26px;

}

/* set drag div of bottom */

#mywindow_botton_right_corner {

	background-image: url("image/window_control_drag.bmp");

	background-repeat: no-repeat;

	top: 8px;

	left: 486px;

	width: 12px;

	height: 12px;

	cursor: nw-resize;

}

		

/**

 * set right div of window 

 */

#mywindow_left {

	background-image: url("image/window_left_border.bmp");

	background-repeat: repeat-y;

	top: 0px;

	left: 0px;

	width: 4px;

	height: 100%;

	cursor: e-resize;

}



/**

 * set central div

 */

#central {

	top: 10%;

	left: 10%;

	width: 80%;

	height: 80%;

}

		

/**

 * set left div of window

 */

#mywindow_right {

	background-image: url("image/window_right_border.bmp");

	background-repeat: repeat-y;

	top: 0px;

	left: 100%;

	width: 4px;

	height: 100%;

	cursor: e-resize;

}

		

/**

 *  set top div of window 

 */

#mywindow_top {

	background-image: url("image/window_top_header.bmp");

	background-repeat: repeat-x;

	top: 0px;

	left: 0px;

	width: 100%;

	height: 30px;

}



/* set left corner div of top */

#mywindow_top_left_corner {

	top: 0px;

	left: 0px;

	background-image: url("image/window_top_left_corner.gif");

    background-repeat: no-repeat;

	width: 8px;

	height: 100%;

}



/* set middle div of top, and set buttom image */

#mywindow_top_middle {

	top: 0px;

	left: 425px;

}



img.button {

	float: right;

	margin: 5px 1px;

}



/* set right corner div of top */

#mywindow_top_right_corner {

	top: 0px;

	left: 498px;

	background-image: url("image/window_top_right_corner.bmp");

	background-repeat: no-repeat;

	width: 8px;

	height: 100%;

}

		

#mywindow_right_corner {

	top: 0%;

	left: 100%;

	width: 4px;

	height: 4px;

	cursor: ne-resize;

}



#mywindow_left_corner {

	top: 0%;

	left: 0%;

	width: 4px;

	height: 4px;

	cursor: nw-resize;

}



#mywindow_rBottom_corner {

	top: 99%;

	left: 0%;

	width: 4px;

	height: 4px;

	cursor: ne-resize;

}



#mywindow_top_drag {

	top: 0%;

	left: 2%;

	width: 96%;

	height: 4px;

	cursor: n-resize;

}



#mywindow_bottom_drag {

	top: 99%;

	left: 2%;

	width: 96%;

	height: 4px;

	cursor: n-resize;

}



		

 

 

 

function MyWindow() {

	/* background left right bottom top div */

	var bgDiv = null;

	var leftDiv = null;

	var rightDiv = null;

	var bottomDiv = null;

	var topDiv = null;

	

	/* old values of window */

	var oldTop = 100;

	var oldLeft = 200;

	var oldWidth = 500;

	var oldHeight = 400;

	var clickTopDivX = null;

	var clickTopDivY = null;

	

	/* record whether max size */

	var maxSize = false;

	/* record whether adjust */

	var adjust = true;

	/* record click whether in window */

	var clickInWindow = false;

	/* record add object */

	var addObj = null;

	/* record whether mouse is down*/

	var down = 0;

	

	/*

	 * set five div of window

	 */

	this.setBackgroundDiv = function(idName) {	

		bgDiv = document.getElementById(idName);

	};



	this.setLeftDiv = function(idName) {

		leftDiv = document.getElementById(idName);

	};

	

	this.setRightDiv = function(idName) {

		rightDiv = document.getElementById(idName);

	};

	

	this.setBottomDiv = function(idName) {

		bottomDiv = document.getElementById(idName);

	}

	

	this.setTopDiv = function(idName) {

		topDiv = document.getElementById(idName);

	}

	

	/* set whether window is resize */

	this.setAdjust =  function(Boolean) {

		adjust = Boolean;

	}

	

	/* initialize events of window div */

	this.initialEvent = function() {

		document.onclick = judgeClick;

		

		var close = document.getElementById("top_close_button");

		close.onmouseover = closeMouseOver;

		close.onmouseout = closeMouseOut;

		close.onmousedown = closeMouseDown;

		close.onclick = this.removeWindow;

		

		

		var max = document.getElementById("top_max_button");

	    max.onmouseover = maxMouseOver;

		max.onmouseout = maxMouseOut;

		max.onmousedown = maxMouseDown;

		max.onclick = showNormalOrMax;

		

		var min = document.getElementById("top_min_button");

		min.onmouseover = minMouseOver;

		min.onmouseout = minMouseOut;

		min.onmousedown = minMouseDown;

		min.onclick = hiddenWindow;

	}

	

	/* hidden window */

	this.hidden = function() {	

		bgDiv.style.display="none";

	};

	

	/* show window */

	this.show = function() {

		bgDiv.style.display="";

	};

	

	/*

	 * add object to window, and delete it

	 */

	this.addObject = function(){

		if (addObj == null) {

			addObj = document.createElement("p");

			addObj.innerHTML = "公鸡中的战斗机,OYE! 你太有才了!";

			document.getElementById("central").appendChild(addObj);

		}

	}

	

	this.deleteObject = function() {

		addObj.parentNode.removeChild(addObj);

		addObj = null;

	}

	

	/*

	 * chang window size function 

	 * curTop curLeft: new top left corner coordinate

	 * curRight curBottom: new bottom right corner coordinate

	 * curWidth curHeight: new width and height

	 * Boolean: whether record new data

	 */

	function changeWindowSize(curTop, curLeft, curWidth, curHeight, Boolean) {

		bgDiv.style.top = curTop;

		bgDiv.style.left = curLeft;

		bgDiv.style.width = curWidth;

		bgDiv.style.height = curHeight;

		

		/* record new data */

		if (Boolean) {

			oldTop = curTop;

			oldLeft = curLeft;

			oldWidth = curWidth;

			oldHeight = curHeight;

		}



		bottomDiv.style.top = curHeight - 26;



		var bDivRCorner = document.getElementById("mywindow_botton_right_corner");

		bDivRCorner.style.left = curWidth - 12;

				

		var tDivMiddleButtom = document.getElementById("mywindow_top_middle");

		tDivMiddleButtom.style.left = curWidth - 72;

				

		var tDivRightCorner = document.getElementById("mywindow_top_right_corner");

		tDivRightCorner.style.left = curWidth - 2;

	}

	

	/* change image of assign idName */

	function changeImage(idName, imgSrc) {

		var image = document.getElementById(idName);

		image.src = imgSrc;

	}

	

	/* show max size of window */

	this.showMaxSize = function() {

		if (adjust) {

			maxSize = true;

			

			changeImage("top_max_button", "image/window_control_resile_normall.bmp");

			

			var maxWidth = screen.availWidth;

			var maxHeight = screen.availHeight;

			changeWindowSize(0, 0, maxWidth, maxHeight, false);

		}

	} 

	

	/* remove window */

	this.removeWindow = function() {

		if (bgDiv != null)

        	bgDiv.parentNode.removeChild(bgDiv);

	}

	

	/* 

	 * get top, left, width, height values of window

	 */

	this.getTop = function() {

		alert("My top pixel of window is: " + bgDiv.offsetTop);

	}

	

	this.getLeft = function() {

		alert("My Left pixel of window is: " + bgDiv.offsetLeft);

	}

	

	this.getWidth = function() {

		alert("My width pixel of window is: " + bgDiv.offsetWidth);

	}

	

	this.getHeight = function() {

		alert("My height pixel of window is: " + bgDiv.offsetHeight);

	}



    /* 

     * get mouse location

     * return [x, y]: x and y coordinate of mouse

     */

	function getMouseXY() {

		var x = event.pageX || (event.clientX 

				+ (document.documentElement.scrollLeft  

    				|| document.body.scrollLeft

				   )

				);  

		

		var y= event.pageY || (event.clientY 

				+ (document.documentElement.scrollTop  

    				|| document.body.scrollTop

				   )

				);

		

		return [x, y];

	}

		

	/* 

	 * judge mouse click whether in window

	 * in other words, judge window whether is lived

	 */

	function judgeClick() {

		/* get mouse click site */

		var coor = getMouseXY();

								

		/* judge whether in window */		

		var myW = document.getElementById("mywindow");

		var closeImage = document.getElementById("top_close_button");

		var maxImage = document.getElementById("top_max_button");

		var minImage = document.getElementById("top_min_button");

			

		if (coor[0] >= myW.offsetLeft && coor[0] <= (myW.offsetLeft + myW.offsetWidth) 

		&& coor[1] >= myW.offsetTop && coor[1] <= (myW.offsetHeight + myW.offsetTop)) {

			clickInWindow = true;

			

			closeImage.src = "image/window_control_close_normall.bmp";

				

			if(maxSize == true) {

				maxImage.src = "image/window_control_resile_normall.bmp";

			} else {

				maxImage.src = "image/window_control_max_normall.bmp";	

			}

			

			minImage.src = "image/window_control_min_normall.bmp";

			

		} else {	

			clickInWindow = false;

			

			closeImage.src = "image/window_control_close_blur.bmp";

			

			if(maxSize == true) {

				maxImage.src = "image/window_control_resile_blur.bmp";

			} else {

				maxImage.src = "image/window_control_max_blur.bmp";	

			}

			

			minImage.src = "image/window_control_min_blur.bmp";

		}

	}

	

	/* 

	 * top button events function

	 * there are mouse down, mouse move, mouse up and mouse move

	 */

	function closeMouseDown() {

		changeImage("top_close_button", "image/window_control_close_mousedown.bmp");

	}

	

	function closeMouseOver() {

		if(clickInWindow == true) {

			changeImage("top_close_button", "image/window_control_close_mouseon.bmp");

		} else {

			changeImage("top_close_button", "image/window_control_close_blur.bmp");

		}

	}

	

	function closeMouseOut() {

		if(clickInWindow == true) {

			changeImage("top_close_button", "image/window_control_close_normall.bmp");

		} else {

			changeImage("top_close_button", "image/window_control_close_blur.bmp");

		}

	}

	

	function maxMouseDown(){

		if (maxSize == true) {

			changeImage("top_max_button", "image/window_control_resile_mousedown.bmp");

		}

		else {

			changeImage("top_max_button", "image/window_control_max_mousedown.bmp");

		}

	}

		

	function maxMouseOver() {

		if (clickInWindow == true) {

			if (maxSize == true) {

				changeImage("top_max_button", "image/window_control_resile_mouseon.bmp");

			}

			else {

				changeImage("top_max_button", "image/window_control_max_mouseon.bmp");

			}

		}

		else {

			if (maxSize == true) {

				changeImage("top_max_button", "image/window_control_resile_blur.bmp");

			}

			else {

				changeImage("top_max_button", "image/window_control_max_blur.bmp");

			}

		}

	}

		

	function maxMouseOut() {

		if(clickInWindow == true) {

			if (maxSize == true) {

				changeImage("top_max_button", "image/window_control_resile_normall.bmp");

			} else {

				changeImage("top_max_button", "image/window_control_max_normall.bmp");

			}

		} else {

			if (maxSize == true) {

				changeImage("top_max_button", "image/window_control_resile_blur.bmp");

			} else {

				changeImage("top_max_button", "image/window_control_max_blur.bmp");

			}

		}

	}

	

	/* max mouse click event function */

	function showNormalOrMax(){

		if (maxSize && adjust) {

			maxSize = false;

			changeWindowSize(oldTop, oldLeft, oldWidth, oldHeight, true);			

		} else {

			showMaxSize();

		}	

	}

	

	function minMouseDown() {

		changeImage("top_min_button", "image/window_control_min_mousedown.bmp");

	}

	

	function minMouseOver() {

		if(clickInWindow == true) {

			changeImage("top_min_button", "image/window_control_min_mouseon.bmp");

		} else {

			changeImage("top_min_button", "image/window_control_min_blur.bmp");

		}

	}

	

	function minMouseOut() {

		if(clickInWindow == true) {

			changeImage("top_min_button", "image/window_control_min_normall.bmp");

		} else {

			changeImage("top_min_button", "image/window_control_min_blur.bmp");

		}

	}

	

	/* 

	 * drag events function

	 */

	this.start = function(idName) {

		if(idName == "mywindow_top") {

			var coor = getMouseXY();

			clickTopDivX = coor[0];

			clickTopDivY = coor[1];

		}

		document.getElementById(idName).setCapture();

		down = 1;

	}

		

	this.move = function(idName) {

		var curTop = oldTop;

		var curLeft = oldLeft;

		var curWidth = oldWidth;

		var curHeight = oldHeight;

		var coor = getMouseXY();

		

		if (down && adjust && !maxSize) {

			if(idName == "mywindow_rBottom_corner") {

				curLeft = coor[0];

				curWidth += oldLeft - curLeft;

				curHeight = coor[1] - oldTop;

				if(curWidth < 80) {

					curLeft = oldLeft + oldWidth - 80;

				} 

			} else if(idName == "mywindow_left_corner") {

				curTop = coor[1];

				curLeft = coor[0];

				curWidth += oldLeft - curLeft;

				curHeight += oldTop - curTop; 

				if(curHeight < 40) {

					curTop = oldTop + oldHeight - 40;

				}

				if(curWidth < 80) {

					curLeft = oldLeft + oldWidth - 80;

				}

			} else if(idName == "mywindow_right_corner") {

				curTop = coor[1];

				curWidth = coor[0] - curLeft;

				curHeight = oldHeight + oldTop - curTop;

				if(curHeight < 40) {

					curTop = oldTop + oldHeight - 40;

				}

			} else if(idName == "mywindow_top") {

				curTop = curTop + coor[1] - clickTopDivY;

				curLeft = curLeft + coor[0] - clickTopDivX;

				clickTopDivX = coor[0];

				clickTopDivY = coor[1];

			} else if(idName == "mywindow_right") { 

				curWidth = coor[0] - oldLeft;

			} else if(idName == "mywindow_left") {

				curLeft = coor[0];

				curWidth += oldLeft - curLeft; 

				if(curWidth < 80) {

					curLeft = oldLeft + oldWidth - 80;

				}

			} else if(idName == "mywindow_top_drag") {

				curTop = coor[1];

				curHeight += oldTop - curTop;

				if(curHeight < 40) {

					curTop = oldTop + oldHeight - 40;

				}

			} else if(idName == "mywindow_bottom_drag"){

				curHeight = coor[1] - oldTop;

			} else {  

			    // drag right corner of window

				curWidth = coor[0] - oldLeft;

				curHeight = coor[1] - oldTop;

			}



			if(curWidth < 80) {

				curWidth = 80;

			}

			

			if(curHeight < 40) {

				curHeight = 40;

			}

			

			changeWindowSize(curTop, curLeft, curWidth, curHeight, true);

		}

	}

		

	this.end = function(idName) {

		down = 0;

		document.getElementById(idName).releaseCapture();	

	}

}


 

 

你可能感兴趣的:(window)