<div class="codetitle"> <span><a style="CURSOR: pointer" data="28260" class="copybut" id="copybut28260" onclick="doCopy('code28260')"><u>コードをコピー</u></a></span> コードは次のとおりです:</div> <div class="codebody" id="code28260"> <br><HTML> <br><HEAD> <br><TITLE>JS+CSS制作的DIV层最小化和随意拖拽排序功能</TITLE> <br><style type="text/css"> <br>body <br>{ <br>margin:10px; <br>} <br>#dragHelper <br>{ <br>position:absolute;/*重要*/ <br>border:2px dashed #000000; <br>background-color:#FFFFFF; <br>filter: alpha(opacity=30); <br>} <br>.normal <br>{ <br>position:absolute;/*重要*/ <br>width:300px; <br>#height:10px; <br>border:1px solid #666666; <br>background-color:#FFFFFF; <br>} <br>.over <br>{ <br>position:absolute;/*重要*/ <br>width:300px; <br>#height:10px; <br>border:1px solid #666666; <br>background-color:#f3f3f3; <br>filter: alpha(opacity=50); <br>} <br>.dragArea { <br>CURSOR: move; <br>} <br></style> <br></HEAD> <br><BODY oncontextmenu="window.event.returnValue=false"> <br><div id="dragHelper" style="display:none"></div> <br><div class="normal" overClass="over" dragClass="normal"> <br><table width="100%"> <br><tbody> <br><tr bgcolor="#CCCCCC" bar="yes"><td>百度</td><td dragArea="yes" class="dragArea">点此拖动</td><td><a href="#" onclick="openClose(this)">-</a> x</td></tr> <br><tr><td colspan="3">地址:http://www.baidu.com</td></tr> <br><tr><td colspan="3">关键字:</td></tr> <br><tr><td colspan="3">说明:</td></tr> <br></tbody> <br></table> <br></div> <br><div class="normal" overClass="over" dragClass="normal"> <br><table width="100%"> <br><tbody> <br><tr bgcolor="#CCCCCC" bar="yes"><td>新浪</td><td dragArea="yes" class="dragArea">........</td><td><a href="#" onclick="openClose(this)">-</a> x</td></tr> <br><tr><td colspan="3">地址:http://www.sina.com.cn</td></tr> <br><tr><td colspan="3">关键字:</td></tr> <br><tr><td colspan="3">说明:</td></tr> <br></tbody> <br></table> <br></div> <br><div class="normal" overClass="over" dragClass="normal"> <br><table width="100%"> <br><tbody> <br><tr bgcolor="#CCCCCC" bar="yes"><td>网页特效</td><td dragArea="yes" class="dragArea">........</td><td><a href="#" onclick="openClose(this)">-</a> x</td></tr> <br><tr><td colspan="3">地址:http://www.CsrCode.cn</td></tr> <br><tr><td colspan="3">关键字:</td></tr> <br><tr><td colspan="3">说明:</td></tr> <br></tbody> <br></table> <br></div> <br><div class="normal" overClass="over" dragClass="normal"> <br><table width="100%"> <br><tbody> <br><tr bgcolor="#CCCCCC" bar="yes"><td>七彩影视</td><td dragArea="yes" class="dragArea">........</td><td><a href="#" onclick="openClose(this)">-</a> x</td></tr> <br><tr><td colspan="3">地址:http://www.33567.cn</td></tr> <br><tr><td colspan="3">关键字:</td></tr> <br><tr><td colspan="3">说明:</td></tr> <br></tbody> <br></table> <br></div> <br></BODY> <br><SCRIPT LANGUAGE="JavaScript"> <br><!-- <BR>varragObjs = [];//ドラッグできる要素の配列<BR> varragObjTops = []; <BR>varragHelper = document.getElementById("dragHelper"); // ドラッグ時のボックスの位置 <BR>varragObj = null; 🎜>varragObjOffset = {left:0,top:0};//ドラッグ オブジェクトの元の位置<BR>var MouseInDragObjOffset = {x:0,y:0};//ドラッグ オブジェクト内のマウスの相対位置オブジェクトをドラッグ <BR>var initHeight = 40; <BR>Number.prototype.NaN0=function(){return isNaN(this)?0:this;} <BR>function getPosition(e){// の絶対位置を取得しますドキュメントに関連する要素 <BR>var left = 0; <BR>while (e.offsetParent){ <BR>left = e.offsetLeft; <BR>top = e.offsetTop; <BR>e = e .offsetParent; <BR>left = e.offsetLeft; <BR>return {x:left, y:top}; 🎜>function MouseCoords(ev ){//ドキュメントに対するマウスの絶対位置を取得します <BR>if(ev.pageX || ev.pageY){ <BR>return {x:ev.pageX, y:ev .pageY}; <BR>} <BR>return { <BR>x:ev.clientX document.body.scrollLeft - document.body.clientLeft, <BR>y:ev.clientY document.body.scrollTop - document.body .clientTop <BR>}; <BR> } <BR>function getMouseOffset(target, ev){//<BR>ev = ev <BR> に対するマウスの相対位置を取得します。 var elementPos = getPosition(target); <BR>var MousePos = MouseCoords(ev); <BR>return {x:mousePos.x - elementPos.y - elementPos.y} <BR>関数mouseDown(ev){ <BR>ev = ev || <BR>if(dragObj){ <BR> <BR>varragArea = false; <BR>if( target.getAttribute("dragArea")){ <BR>dragArea = true; <BR>} <BR>while(!target.getAttribute("isDragObj")) { <BR>if(target.tagName=="HTML" ) <BR>break; <BR>target = target.parentNode; <BR>} <BR>if(dragArea && target.getAttribute("isDragObj")){ <BR>dragObj = target; <BR>// 書き換えの目的は、現在のオブジェクトを最上位に維持することです。 <BR>document.body.removeChild(dragObj); <BR>document.body.appendChild(dragObj); 🎜>//ドラッグ オブジェクトの元の位置を記録します<BR>dragObjOffset.left =ragObj.style.left; <BR>dragObj.className =ragObj.getAttribute; overClass"); <BR>//ドラッグ オブジェクト内のマウスの相対位置 Position<BR>mouseInDragObjOffset = getMouseOffset(dragObj, ev); <BR>dragHelper.style.left =ragObj.style.left; <BR>ドラッグヘルパー.スタイルトップ = ドラッグObj.スタイル.トップ; <BR>ドラッグヘルパー.スタイル.幅 = ドラッグObj.offsetWidth; <BR>ドラッグヘルパー.スタイル.ディスプレイ高さ = ""; <BR>//alert(dragObj.offsetWidth ":"ragObj.clientWidth); <BR>} <BR>} <BR>function MouseUp(ev){ <BR>ev = ev || <BR>ターゲット = ev.srcElement || ev.target; <BR>if(dragObj){ <BR>dragObj.style.left =ragHelper.style.top; 🎜>dragHelper.style.display = "none"; <BR>dragObj.className =ragObj.getAttribute("dragClass"); <BR>dragObj = <BR>} <BR>} <BR>関数 MouseMove(ev) ){ <BR>ev = ev || <BR>if(dragObj) { <BR>/*dragHelper.style.left =ragObjOffset.left; >dragHelper.style.top = ドラッグObjOffset.top; <BR>dragHelper.style.width = ドラッグObj.offsetWidth; <BR>dragHelper.style.height = ドラッグObj.offsetHeight = "";* / <BR>var windowWidth = document.body.offsetWidth;// ウィンドウの幅<BR>var windowHeight = document.body.offsetHeight;// ウィンドウの高さ<BR>// ドラッグ オブジェクトは現在の位置にある必要があります<BR> varragObjLeft =mousePos.x -mouseInDragObjOffset.x; <BR>varragObjTop =mousePos.y -mouseInDragObjOffset.y; <BR>//判定を追加します。そうでない場合、ドラッグ オブジェクトはブラウザ ウィンドウの外にドラッグされます。<BR>if( ragObjLeft >= 0 &&ragObjLeft <= windowWidth -ragObj.offsetWidth - 20) <BR>dragObj.style .left =ragObjLeft; <BR>if(dragObjTop >=0) <br>dragObj.style.top =ragObjTop ; <br>repaint(); <br>} <br>} <br>//クローンオブジェクト<br>function cloneObject(srcObj, destObj){ <br>destObj = srcObj.cloneNode(true); <br>function makeDraggable(element){ <br>element.setAttribute("isDragObj", "y") ; <br>} <br>function repaint(){ <br>for(i=0; i<dragObjs.長さ; i ){ <BR>if(dragObjs[i] == ドラッグObj){ <BR>dragObjPos = i; <BR>} <BR>} <BR>if(dragObjPos>0 && parseInt(dragObj.style.top)<parseInt(dragObjs[dragObjPos- 1].style.top)){ <BR>dragObjs[dragObjPos] =ragObjs[dragObjPos-1]; >dragObjs[dragObjPos-1] =ragHelper; <BR>dragObjPos =ragObjPos - 1; <BR>} <BR>if(dragObjPos<dragObjs.length-1 && parseInt(dragObj.style.top)>parseInt(dragObjs[ドラッグObjPos 1].style.top)){ <BR>dragObjs[dragObjPos] = ドラッグObjs[dragObjPos 1]; <BR>dragObjPos = ドラッグObjPos 1;ペイントDragObjs(); <BR>dragObjs[dragObjPos] = ドラッグObj; <BR>} <BR>関数paintDragObj s(){ <BR>var h = 40; i<dragObjs.length; i ){ <BR>dragObjs[i].style.left = 20; <BR>dragObjs[i].style.top = h; <BR>h =ragObjs[i].offsetHeight 10; >}<BR>function openClose(obj){ <BR>obj.innerHTML = obj.innerHTML=="-"?" ":"-"; <BR>while(obj.tagName != "TBODY"){ <BR>obj = obj.parentNode; <BR>} <BR>for(i=0; i<obj.childNodes.length; i ){ <BR>if(obj.childNodes[i].nodeName == "#text" <BR>|| obj. childNodes[i].getAttribute("bar")){ 続行; <BR>obj.childNodes[i].style.display=obj.childNodes[i].style.display==""?"none":""; <BR>} <BR>paintDragObjs(); <BR>} <BR>document.onmousedown = マウスダウン; <BR>document.onmouseup = マウスアップ; <BR>document.onmousemove = マウス移動; <BR>window.onload = function(){ <BR>var objs = document.getElementsByTagName("Div"); <BR>for(i=0; i<objs.length; i ){ <BR>var item = objs.item(i); <BR>//if(i==1)item.style.height=150; <BR>if(item.getAttribute("overClass")){ <BR>makeDraggable(item); <BR>dragObjs.push(item); <BR>item.style.left = 20; <BR>item.style.top = initHeight; <BR>dragObjTops.push(initHeight); <BR>initHeight = item.offsetHeight 10; <BR>} <BR>} <BR>//ragHelper = document.createElement('DIV'); <BR>//ragHelper.style.cssText = 'position:absolute;display:none;'; <BR>// document.body.appendChild(dragHelper); <BR>} <BR>//--> <BR></SCRIPT> <br></HTML> <br> </div>