>웹 프론트엔드 >JS 튜토리얼 >html css js는 xp 창 인터페이스 및 관련 기능_javascript 기술을 구현합니다.

html css js는 xp 창 인터페이스 및 관련 기능_javascript 기술을 구현합니다.

WBOY
WBOY원래의
2016-05-16 17:39:251239검색

참고: 이 프로그램은 IE에서 디버깅되었습니다. 다른 브라우저에는 버그가 있을 수 있습니다. 죄송합니다!

코드 복사 코드는 다음과 같습니다.





Insert title here





<script> <br>alert("XP Window以IE测试,其他浏览器可能有BUG请见谅! 基本功能+四边四角顶部拖拉都已实现!") <br>alert("进行操作前,记得先初始化窗口哦!"); <br><br>/* <br>* create xp window and initialize <br>*/ <br>var myW = new MyWindow(); <br>function initialize() { <br>myW.setBackgroundDiv("mywindow"); <br>myW.setLeftDiv("mywindow_left"); <br>myW.setRightDiv("mywindow_right"); <br>myW.setBottomDiv("mywindow_bottom"); <br>myW.setTopDiv("mywindow_top"); <br>myW.initialEvent(); <br>} <br><br>/* <br>* list button event function <br>*/ <br>function hiddenWindow() { <br>myW.hidden(); <br>} <br><br>function showWindow() { <br>myW.show(); <br>} <br><br>function setAdjust(adj) { <br>myW.setAdjust(adj); <br>} <br><br>function showMaxSize() { <br>myW.showMaxSize(); <br>} <br><br>function getTop() { <br>myW.getTop(); <br>} <br><br>function getLeft() { <br>myW.getLeft(); <br>} <br><br>function getWidth() { <br>myW.getWidth(); <br>} <br><br>function getHeight() { <br>myW.getHeight(); <br>} <br><br>function removeWindow() { <br>myW.removeWindow(); <br>} <br><br>function addObject() { <br>myW.addObject(); <br>} <br><br>function deleteObject() { <br>myW.deleteObject(); <br>} <br><br>/* <br>* drag operation event function <br>*/ <br>function start(idName) { <br>myW.start(idName); <br>} <br><br>function move(idName) { <br>myW.move(idName); <br>} <br><br>function end(idName) { <br>myW.end(idName); <br>} <br><br></script>










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




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



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






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



/>
/>
/>






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

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

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



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

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





复代码 代码如下:

/**
* 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 {
background-color: purple;
color: white;
text-decoration: none;
padding: 4px 6px;
}

/* set
: 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() {
/* 배경 왼쪽 오른쪽 하단 상단 div */
var bgDiv = null;
var leftDiv = null;
var rightDiv = null;
var BottomDiv = null;
var topDiv = null;

/* 창의 이전 값 */
var oldTop = 100;
var oldLeft = 200;
var oldWidth = 500;
var oldHeight = 400;
var clickTopDivX = null;
var clickTopDivY = null;

/* 최대 크기 여부 기록 */
var maxSize = false;
/* 조정 여부 기록 */
var adjust = true;
/* 창에서 클릭 여부를 기록합니다. */
var clickInWindow = false;
/* 레코드 추가 개체 */
var addObj = null;
/* 마우스가 눌려졌는지 기록*/
var down = 0;

/*
* 창의 5개 div 설정
*/
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);
}

/* 창 크기 조정 여부 설정 */
this.setAdjust = function(Boolean) {
adjust = Boolean;
}

/* 윈도우 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 = 숨겨진 창;
}

/* 숨겨진 창 */
this.hidden = function() {
bgDiv.style.display="none";
};

/* 표시 창 */
this.show = function() {
bgDiv.style.display="";
};

/*
* 창에 개체를 추가하고 삭제합니다.
*/
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;
}

/*
* 창 크기 함수 변경
* curTop curLeft: 새로운 왼쪽 상단 모서리 좌표
* curRight curBottom: 새로운 오른쪽 하단 모서리 좌표
* curWidth curHeight : 새로운 너비와 높이
* Boolean: 새로운 데이터 기록 여부
*/
functionchangeWindowSize(curTop, curLeft, curWidth, curHeight, Boolean) {
bgDiv.style.top = curTop;
bgDiv.style.left = curLeft;
bgDiv.style.width = curWidth;
bgDiv.style.height = curHeight;

/* 새 데이터 기록 */
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;
}

/* 할당 idName 이미지 변경 */
functionchangeImage(idName, imgSrc) {
var image = document.getElementById(idName);
image.src = imgSrc;
}

/* 창의 최대 크기 표시 */
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);
}
}

/* 창 제거 */
this.removeWindow = function() {
if (bgDiv != null)
bgDiv.parentNode.removeChild( bgDiv);
}

/*
* 창의 위쪽, 왼쪽, 너비, 높이 값을 가져옵니다.
*/
this.getTop = function() {
alert("My 창의 상단 픽셀은 " bgDiv.offsetTop);
}

this.getLeft = function() {
alert("창의 왼쪽 픽셀은 " bgDiv.offsetLeft);
}

this.getWidth = function() {
alert("내 창 너비 픽셀: " bgDiv.offsetWidth);
}

this.getHeight = function() {
alert("창의 내 높이 픽셀은 다음과 같습니다: " bgDiv.offsetHeight);
}
/*
* 마우스 위치 가져오기
* return [x, y]: 마우스의 x 및 y 좌표
*/
function getMouseXY() {
var x = 이벤트. 페이지X || (event.clientX
(document.documentElement.scrollLeft
|| document.body.scrollLeft
)
);

var y= event.pageY || (event.clientY
(document.documentElement.scrollTop
|| document.body.scrollTop
)
);

[x, y]를 반환합니다.
}

/*
* 창에서 마우스 클릭 여부를 판단
* 즉, 창이 살아 있는지 판단
*/
function JudgeClick() {
/* 마우스 클릭 사이트 가져오기 */
var coor = getMouseXY();

/* 창에 있는지 판단 */
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 = "이미지/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 = "이미지/window_control_min_normall.bmp";

} else {
clickInWindow = false;

closeImage.src = "이미지/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 = "이미지/window_control_min_blur.bmp";
}
}

/*
* 상단 버튼 이벤트 기능
* 마우스 다운, 마우스 이동, 마우스 업, 마우스 이동
*/
기능이 있습니다. 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", "이미지/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", "이미지/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");
}
}
}

/* 최대 마우스 클릭 이벤트 함수 */
function showNormalOrMax(){
if (maxSize && adjust) {
maxSize = 거짓;
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");
}
}

/*
* 드래그 이벤트 함수
*/
this.start = function(idName) {
if(idName == "mywindow_top ") {
var coor = getMouseXY();
clickTopDivX = coor[0];
clickTopDivY = coor[1];
}
document.getElementById(idName).setCapture();
다운 = 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();
}
}
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.