zoukankan      html  css  js  c++  java
  • 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- 2px;
    	border-bottom- 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 */
    	 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;
    	 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;
    	 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;
    	 4px;
    	height: 100%;
    	cursor: e-resize;
    }
    
    /**
     * set central div
     */
    #central {
    	top: 10%;
    	left: 10%;
    	 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%;
    	 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;
    	 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;
    	 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;
    	 8px;
    	height: 100%;
    }
    		
    #mywindow_right_corner {
    	top: 0%;
    	left: 100%;
    	 4px;
    	height: 4px;
    	cursor: ne-resize;
    }
    
    #mywindow_left_corner {
    	top: 0%;
    	left: 0%;
    	 4px;
    	height: 4px;
    	cursor: nw-resize;
    }
    
    #mywindow_rBottom_corner {
    	top: 99%;
    	left: 0%;
    	 4px;
    	height: 4px;
    	cursor: ne-resize;
    }
    
    #mywindow_top_drag {
    	top: 0%;
    	left: 2%;
    	 96%;
    	height: 4px;
    	cursor: n-resize;
    }
    
    #mywindow_bottom_drag {
    	top: 99%;
    	left: 2%;
    	 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();	
    	}
    }
    


  • 相关阅读:
    Sending post
    <<the not so short introduction to Latex2e >> 读书笔记
    Latex 书签中文乱码解决方案
    VisualSVN迁移到其他服务器 子曰
    C#遍历DataSet中数据的几种方法总结 子曰
    Extjs formpanel加载数据的两种方式 子曰
    向老销售取经,学来的一点软件销售技巧 子曰
    extjs 实现 NumberField 即时计算 子曰
    Ext.form.DateField简单用法及日期范围控制 子曰
    解决.aspx中插入浮动广告不滚动问题 子曰
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2981402.html
Copyright © 2011-2022 走看看