﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-chou's blog-随笔分类-about ajax</title><link>http://www.blogjava.net/chou/category/32795.html</link><description>records of my java learning process </description><language>zh-cn</language><lastBuildDate>Sat, 30 Aug 2008 07:51:12 GMT</lastBuildDate><pubDate>Sat, 30 Aug 2008 07:51:12 GMT</pubDate><ttl>60</ttl><item><title>不错的js层效果</title><link>http://www.blogjava.net/chou/archive/2008/08/28/225254.html</link><dc:creator>chou</dc:creator><author>chou</author><pubDate>Thu, 28 Aug 2008 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/chou/archive/2008/08/28/225254.html</guid><wfw:comment>http://www.blogjava.net/chou/comments/225254.html</wfw:comment><comments>http://www.blogjava.net/chou/archive/2008/08/28/225254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chou/comments/commentRss/225254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chou/services/trackbacks/225254.html</trackback:ping><description><![CDATA[<p>//保留的位置 <br />
var saveLeft,saveTop,saveWidth,saveHeight; <br />
var theBody; <br />
var eventType;&nbsp;&nbsp;&nbsp; //事件种类, "move"、"resize" <br />
var div; </p>
<p><br />
//创建并设定div的参数 <br />
function setDiv(content) <br />
{<br />
&nbsp;<br />
&nbsp; //防止重复打开 <br />
&nbsp; if (div) <br />
&nbsp; { <br />
&nbsp;&nbsp; eCloseDiv(); <br />
&nbsp; } <br />
&nbsp; var newLeft,newTop,newWidth,newHeight; <br />
&nbsp; theBody = document.body; <br />
&nbsp;&nbsp; <br />
&nbsp; div = document.createElement("div"); <br />
&nbsp; div.id = "panelDiv"; <br />
&nbsp; div.style.position = "absolute"; <br />
&nbsp; div.style.backgroundColor = "#5F86B5" // 边框颜色 <br />
&nbsp; div.style.padding = "1px 1px 1px 1px"; <br />
&nbsp; div.style.overflow = "hidden"; <br />
&nbsp; div.style.zIndex = 1; <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; //设定打开的大小和位置 <br />
&nbsp; Function() <br />
&nbsp; { <br />
&nbsp;&nbsp; //默认大小默认位置居中打开&nbsp; <br />
&nbsp;&nbsp; newWidth = "350px"; <br />
&nbsp;&nbsp; newHeight = "260px"; <br />
&nbsp;&nbsp; newLeft = (theBody.clientWidth - parseInt(newWidth)) / 2 + "px"; <br />
&nbsp;&nbsp; newTop = (theBody.clientHeight - parseInt(newHeight)) / 2 + "px"; <br />
&nbsp;&nbsp; div.style.width = newWidth; <br />
&nbsp;&nbsp; div.style.height = newHeight; <br />
&nbsp;&nbsp; div.style.left = newLeft; <br />
&nbsp;&nbsp; div.style.top = newTop; <br />
&nbsp; } <br />
&nbsp; div = setChild(div,content); <br />
&nbsp; theBody.appendChild(div); <br />
&nbsp;&nbsp; <br />
//&nbsp; var ipt = document.getElementsByTagName("input"); <br />
//&nbsp; for(var i = 0; i &lt; ipt.length; i++) <br />
//&nbsp; { <br />
//&nbsp;&nbsp; ipt[i].disabled = true; <br />
//&nbsp; } <br />
} </p>
<p>function setChild(div,content) <br />
{ <br />
&nbsp; //可否移动、调整 <br />
&nbsp; var isMove = true<br />
&nbsp; var isResize = true; <br />
&nbsp;&nbsp; <br />
&nbsp; //底色 <br />
&nbsp; var cDiv = document.createElement; <br />
&nbsp; var backDiv = cDiv("div"); <br />
&nbsp; backDiv.style.cssText = "left: 0px; top: 0px; width: 100%; height: 100%; background-color:#DFE8F6;" ; <br />
&nbsp; div.appendChild(backDiv); <br />
&nbsp;&nbsp; <br />
&nbsp; //标题 <br />
&nbsp; var topDiv = cDiv("div"); <br />
&nbsp; topDiv.style.cssText = "left: 1px; top: 1px; width: 100%; height: 22px; border-bottom:1px solid #5F86B5; position: absolute; background: url(images/bgd.gif) repeat-x; vertical-align: middle; z-index: 5"; <br />
&nbsp; if (isMove) <br />
&nbsp; { <br />
&nbsp;&nbsp; topDiv.style.cursor = "move"; <br />
&nbsp;&nbsp; topDiv.setAttribute("onmousedown", function(){setMove(this)}); <br />
&nbsp; } <br />
&nbsp; else <br />
&nbsp; { <br />
&nbsp;&nbsp; topDiv.style.cursor = "default"; <br />
&nbsp; } <br />
&nbsp; topDiv.innerHTML = "&lt;span style='top: 5px; left:5px; font-size: 12px; font-weight: bold; color: #102548; position: relative;' onselectstart='return false'&gt;过滤提示&lt;/span&gt;"; <br />
&nbsp; div.appendChild(topDiv); <br />
&nbsp;&nbsp; <br />
&nbsp; //关闭按钮 <br />
&nbsp; var closeDiv = cDiv("div"); <br />
&nbsp; closeDiv.style.cssText = "right: 8px; top : 4px; width: 16px; height: 16px; position: absolute;&nbsp; text-align: center; vertical-align: middle; cursor: pointer; z-index:10"; <br />
&nbsp; closeDiv.setAttribute("onclick", function() {eCloseDiv()}); <br />
&nbsp; closeDiv.innerHTML = "&lt;span style='font-size: 12px; font-weight: bold; color: #0E377A;' title='Esc快捷键'&gt;&lt;img src = 'images/close.gif'/&gt;&lt;/span&gt;"; <br />
&nbsp; div.appendChild(closeDiv); <br />
&nbsp;&nbsp; <br />
&nbsp; //内容 <br />
&nbsp; var contentDiv = cDiv("div"); <br />
&nbsp; contentDiv.style.cssText = "left: 1px; top: 35px; background-color:#DFE8F6; width: 100%; position: absolute; overflow: auto;&nbsp; padding:5px;"; <br />
&nbsp; contentDiv.style.height = (parseInt(div.style.height) - 40) + "px"; <br />
&nbsp; contentDiv.innerHTML = "&lt;table style='width: 100%; height: 100%; text-align: left; vertical-align: hidden'&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;"+content+"&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"; <br />
&nbsp; div.appendChild(contentDiv); <br />
&nbsp;&nbsp; <br />
&nbsp; //调整大小 <br />
&nbsp; var reDiv = cDiv("div"); <br />
&nbsp; reDiv.style.cssText = "right: 0px; bottom: 0px; width: 5px; height: 5px; position: absolute;"; <br />
&nbsp; if (isResize) <br />
&nbsp; { <br />
&nbsp;&nbsp; reDiv.style.cursor = "se-resize"; <br />
&nbsp;&nbsp; reDiv.setAttribute("onmousedown", function(){setResize(this)}); <br />
&nbsp; } <br />
&nbsp; else <br />
&nbsp; { <br />
&nbsp;&nbsp; reDiv.style.cursor = "default"; <br />
&nbsp; } <br />
&nbsp; div.appendChild(reDiv); <br />
&nbsp;&nbsp; <br />
&nbsp; return div; <br />
} </p>
<p>var oX, oY, oLeft, oTop, oWidth, oHeight; //存储原始移动前的位置 <br />
var divClone, oDiv;&nbsp;&nbsp; //克隆的节点和原始节点 <br />
var oTime; <br />
//clone拖移的节点 <br />
function setMove(obj) <br />
{ <br />
&nbsp; if (event.button == 1) <br />
&nbsp; { <br />
&nbsp;&nbsp; if (oTime) <br />
&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp; clearTimeout(oTime); <br />
&nbsp;&nbsp;&nbsp; divClone.parentNode.removeChild(divClone); <br />
&nbsp;&nbsp; } <br />
&nbsp;&nbsp; oDiv = obj.parentNode; <br />
&nbsp;&nbsp; divClone = oDiv.cloneNode(true); <br />
&nbsp;&nbsp; divClone.style.filter = "Alpha(opacity=50)"; <br />
&nbsp;&nbsp; divClone.childNodes[1].setAttribute("onmousemove", function(){startMove(this)}); <br />
&nbsp;&nbsp; divClone.childNodes[1].setAttribute("onmouseup", function(){endMove()}); <br />
&nbsp;&nbsp; oX = parseInt(event.clientX); <br />
&nbsp;&nbsp; oY = parseInt(event.clientY); <br />
&nbsp;&nbsp; oLeft = parseInt(divClone.style.left); <br />
&nbsp;&nbsp; oTop = parseInt(divClone.style.top); <br />
&nbsp;&nbsp; document.body.appendChild(divClone); <br />
&nbsp;&nbsp; divClone.childNodes[1].setCapture(); <br />
&nbsp;&nbsp; eventType = "move"; <br />
&nbsp; } <br />
} </p>
<p>//拖移 <br />
function startMove(obj) <br />
{ <br />
&nbsp; if (eventType == "move" &amp;&amp; event.button == 1) <br />
&nbsp; { <br />
&nbsp;&nbsp; var moveDiv = obj.parentNode; <br />
&nbsp;&nbsp; moveDiv.style.left = (oLeft + event.clientX - oX) + "px"; <br />
&nbsp;&nbsp; moveDiv.style.top = (oTop + event.clientY - oY) + "px"; <br />
&nbsp; } <br />
} </p>
<p>//拖移结束调用动画 <br />
function endMove() <br />
{ <br />
&nbsp; if (eventType == "move") <br />
&nbsp; { <br />
&nbsp;&nbsp; divClone.childNodes[1].releaseCapture(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; move(parseInt(divClone.style.left), parseInt(divClone.style.top)); <br />
&nbsp;&nbsp; eventType = ""; <br />
&nbsp; } <br />
} </p>
<p>//移动的动画 <br />
function move(aimLeft, aimTop) <br />
{ <br />
&nbsp; var nowLeft = parseInt(oDiv.style.left); <br />
&nbsp; var nowTop = parseInt(oDiv.style.top); <br />
&nbsp; var moveSize = 30; <br />
&nbsp; if (nowLeft &gt; aimLeft + moveSize || nowLeft &lt; aimLeft - moveSize || nowTop &gt; aimTop + moveSize || nowTop &lt; aimTop - moveSize) <br />
&nbsp; { <br />
&nbsp;&nbsp; oDiv.style.left = aimLeft &gt; nowLeft + moveSize ? (nowLeft + moveSize) + "px" : aimLeft &lt; nowLeft - moveSize ? (nowLeft - moveSize) + "px" : nowLeft + "px"; <br />
&nbsp;&nbsp; oDiv.style.top = aimTop &gt; nowTop + moveSize ? (nowTop + moveSize) + "px" : aimTop &lt; nowTop - moveSize ? (nowTop - moveSize) + "px" : nowTop + "px"; <br />
&nbsp;&nbsp; oTime = setTimeout("move(" + aimLeft + ", " + aimTop + ")", 1); <br />
&nbsp; } <br />
&nbsp; else <br />
&nbsp; { <br />
&nbsp;&nbsp; oDiv.style.left = divClone.style.left; <br />
&nbsp;&nbsp; oDiv.style.top = divClone.style.top; <br />
&nbsp;&nbsp; divClone.parentNode.removeChild(divClone); <br />
&nbsp;&nbsp; divClone == null; <br />
&nbsp; } <br />
} </p>
<p>//clone调整大小的节点 <br />
function setResize(obj) <br />
{ <br />
&nbsp; if (event.button == 1) <br />
&nbsp; { <br />
&nbsp;&nbsp; if (oTime) <br />
&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp; clearTimeout(oTime); <br />
&nbsp;&nbsp;&nbsp; divClone.parentNode.removeChild(divClone); <br />
&nbsp;&nbsp; } <br />
&nbsp;&nbsp; oDiv = obj.parentNode; <br />
&nbsp;&nbsp; divClone = oDiv.cloneNode(true); <br />
&nbsp;&nbsp; divClone.style.filter = "Alpha(opacity=50)"; <br />
&nbsp;&nbsp; divClone.childNodes[4].setAttribute("onmousemove", function(){startResize(this)}); <br />
&nbsp;&nbsp; divClone.childNodes[4].setAttribute("onmouseup", function(){endResize()}); <br />
&nbsp;&nbsp; oX = parseInt(event.clientX); <br />
&nbsp;&nbsp; oY = parseInt(event.clientY); <br />
&nbsp;&nbsp; oWidth = parseInt(divClone.style.width); <br />
&nbsp;&nbsp; oHeight = parseInt(divClone.style.height); <br />
&nbsp;&nbsp; document.body.appendChild(divClone); <br />
&nbsp;&nbsp; divClone.childNodes[4].setCapture(); <br />
&nbsp;&nbsp; eventType = "resize"; <br />
&nbsp; } <br />
} </p>
<p>//拖动调整大小 <br />
function startResize(obj) <br />
{ <br />
&nbsp; if (eventType == "resize" &amp;&amp; event.button == 1) <br />
&nbsp; { <br />
&nbsp;&nbsp; var nX = event.clientX; <br />
&nbsp;&nbsp; var nY = event.clientY; <br />
&nbsp;&nbsp; if (nX &gt; oX - oWidth &amp;&amp; nY &gt; oY - oHeight + 40) <br />
&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp; var resizeDiv = obj.parentNode; <br />
&nbsp;&nbsp;&nbsp; resizeDiv.style.width = (oWidth + event.clientX - oX) + "px"; <br />
&nbsp;&nbsp;&nbsp; resizeDiv.style.height = (oHeight + event.clientY - oY) + "px"; <br />
&nbsp;&nbsp;&nbsp; resizeDiv.childNodes[3].style.height = (parseInt(resizeDiv.style.height) - 40) + "px"; <br />
&nbsp;&nbsp; } <br />
&nbsp; } <br />
} </p>
<p>//调整大小结束 <br />
function endResize() <br />
{ <br />
&nbsp; if (eventType == "resize") <br />
&nbsp; { <br />
&nbsp;&nbsp; divClone.childNodes[4].releaseCapture(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resize(parseInt(divClone.style.width), parseInt(divClone.style.height)); <br />
&nbsp;&nbsp; eventType = ""; <br />
&nbsp; } <br />
} </p>
<p>//调整大小的动画 <br />
function resize(aimWidth, aimHeight) <br />
{ <br />
&nbsp; var nowWidth = parseInt(oDiv.style.width); <br />
&nbsp; var nowHeight = parseInt(oDiv.style.height); <br />
&nbsp; var resizeSize = 30; <br />
&nbsp; if (nowWidth &gt; aimWidth + resizeSize || nowWidth &lt; aimWidth - resizeSize || nowHeight &gt; aimHeight + resizeSize || nowHeight &lt; aimHeight - resizeSize) <br />
&nbsp; { <br />
&nbsp;&nbsp; oDiv.style.width = aimWidth &gt; nowWidth + resizeSize ? (nowWidth + resizeSize) + "px" : aimWidth &lt; nowWidth - resizeSize ? (nowWidth - resizeSize) + "px" : nowWidth + "px"; <br />
&nbsp;&nbsp; oDiv.style.height = aimHeight &gt; nowHeight + resizeSize ? (nowHeight + resizeSize) + "px" : aimHeight &lt; nowHeight - resizeSize ? (nowHeight - resizeSize) + "px" : nowHeight + "px"; <br />
&nbsp;&nbsp; oDiv.childNodes[3].style.height = (parseInt(oDiv.style.height) - 40) + "px"; <br />
&nbsp;&nbsp; oTime = setTimeout("resize(" + aimWidth + ", " + aimHeight + ")", 1); <br />
&nbsp; } <br />
&nbsp; else <br />
&nbsp; { <br />
&nbsp;&nbsp; oDiv.style.width = divClone.style.width; <br />
&nbsp;&nbsp; oDiv.style.height = divClone.style.height; <br />
&nbsp;&nbsp; oDiv.childNodes[3].style.height = (parseInt(oDiv.style.height) - 40) + "px"; <br />
&nbsp;&nbsp; divClone.parentNode.removeChild(divClone); <br />
&nbsp;&nbsp; divClone == null; <br />
&nbsp; } <br />
} </p>
<p>//关闭DIV <br />
function eCloseDiv() <br />
{ &nbsp;<br />
&nbsp;<br />
&nbsp; if (div) <br />
&nbsp; { <br />
&nbsp;&nbsp; div.parentNode.removeChild(div); <br />
//&nbsp;&nbsp; var ipt = document.getElementsByTagName("input"); <br />
//&nbsp;&nbsp; for(var i = 0; i &lt; ipt.length; i++) <br />
//&nbsp;&nbsp; { <br />
//&nbsp;&nbsp;&nbsp; ipt[i].disabled = false; <br />
//&nbsp;&nbsp; } <br />
&nbsp;&nbsp; div = null; <br />
&nbsp; } <br />
} </p>
<p>//保留位置和大小 <br />
function saveDiv() <br />
{ <br />
&nbsp; if (div) <br />
&nbsp; { <br />
&nbsp;&nbsp; saveLeft = div.style.left; <br />
&nbsp;&nbsp; saveTop = div.style.top; <br />
&nbsp;&nbsp; saveWidth = div.style.width; <br />
&nbsp;&nbsp; saveHeight = div.style.height; <br />
&nbsp; } <br />
} </p>
<p>//快捷键 <br />
document.onkeydown = function() <br />
{ <br />
&nbsp; event.keyCode == 27 ? eCloseDiv() : null;&nbsp; //Esc快捷键 <br />
&nbsp; event.ctrlKey &amp;&amp; (event.keyCode == 83 || event.keyCode == 115) ? saveDiv() : null; //ctrl+s保存位置 <br />
&nbsp; event.ctrlKey &amp;&amp; event.keyCode == 13 ? setDiv() : null //ctrl+enter打开Div <br />
&nbsp; !event.ctrlKey &amp;&amp; (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) ? arrowMove(event.keyCode) : null; <br />
&nbsp; event.ctrlKey &amp;&amp; (event.keyCode == 37&nbsp; || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) ? arrowResize(event.keyCode) : null; <br />
} </p>
<p>// 单击层以外的地方隐藏层<br />
document.onclick = function()<br />
{<br />
&nbsp; if (div)<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(typeof event.srcElement.message == "undefined")<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; if (div.componentFromPoint(event.clientX,event.clientY)=="outside")<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; eCloseDiv();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; } <br />
&nbsp; }<br />
}</p>
<p>//上下左右箭头移动div <br />
function arrowMove(eKeyCode) <br />
{ <br />
&nbsp; if (div) <br />
&nbsp; { <br />
&nbsp;&nbsp; var isMove = document.getElementById("isMove").checked; <br />
&nbsp;&nbsp; if (isMove) <br />
&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp; switch(eKeyCode) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 37: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.left = (parseInt(div.style.left) - 1) + "px"; //left <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 38: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.top = (parseInt(div.style.top) - 1) + "px"; //up <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 39: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.left = (parseInt(div.style.left) + 1) + "px"; //right <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 40: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.top = (parseInt(div.style.top) + 1) + "px"; //down <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp; } <br />
&nbsp; } <br />
} </p>
<p>//ctrl+上下左右箭头调整div大小 <br />
function arrowResize(eKeyCode) <br />
{ <br />
&nbsp; if (div) <br />
&nbsp; { <br />
&nbsp;&nbsp; var isResize = document.getElementById("isResize").checked; <br />
&nbsp;&nbsp; if (isResize) <br />
&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp; switch(eKeyCode) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 37: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.width = (parseInt(div.style.width) - 1) + "px"; //left <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 38: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.height = (parseInt(div.style.height) - 1) + "px"; //up <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 39: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.width = (parseInt(div.style.width) + 1) + "px"; //right <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp;&nbsp; case 40: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div.style.height = (parseInt(div.style.height) + 1) + "px"; //down <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break <br />
&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp; } <br />
&nbsp; } <br />
} <br />
</p>
<img src ="http://www.blogjava.net/chou/aggbug/225254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chou/" target="_blank">chou</a> 2008-08-28 12:42 <a href="http://www.blogjava.net/chou/archive/2008/08/28/225254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>