国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript實(shí)現(xiàn)DIV層拖動及動態(tài)增加新層的方法

2024-05-06 16:20:02
字體:
供稿:網(wǎng)友

這篇文章主要介紹了JavaScript實(shí)現(xiàn)DIV層拖動及動態(tài)增加新層的方法,設(shè)計javascript操作div層的拖動與增加的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了JavaScript實(shí)現(xiàn)DIV層拖動及動態(tài)增加新層的方法。分享給大家供大家參考。具體分析如下:

無刷新添加一個新的DIV層,并可實(shí)現(xiàn)的該層的拖動,鼠標(biāo)拖動層可移動位置,將JS部分另存為一個新文件,用到的時候從外部引入,這個拖動層代碼很流行,GG和YAHOO等大網(wǎng)站經(jīng)常可以看到這種效果。

 

 
  1. <html> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  4. <title>DIV層拖動,動態(tài)增加新層的JavaScript</title> 
  5. <style> 
  6. body {margin:0px;padding:0px;font-size:12px;text-align:center;} 
  7. body > div {text-align:center; margin-right:auto; margin-left:auto;}  
  8. .content{width:900px;} 
  9. .content .left{ 
  10. float:left; 
  11. width:20%; 
  12. border:1px solid #0066CC; 
  13. margin:3px; 
  14. .content .center{ 
  15. float:left; 
  16. border:1px solid #FF0000; 
  17. margin:3px; 
  18. width:57% 
  19. .content .right{ 
  20. float:right; 
  21. width:20%; 
  22. border:1px solid #FF0000; 
  23. margin:3px 
  24. .mo{ 
  25. height:auto; 
  26. border:1px solid #CCC; 
  27. margin:3px; 
  28. background:#FFF 
  29. .mo h1{ 
  30. background:#ECF9FF; 
  31. height:18px; 
  32. padding:3px; 
  33. cursor:move 
  34. .closediv{ 
  35. cursor:default
  36. .minusspan{ 
  37. cursor:default
  38. .mo .nr{ 
  39. height:80px; 
  40. border:1px solid #F3F3F3; 
  41. margin:2px 
  42. h1{ 
  43. margin:0px; 
  44. padding:0px; 
  45. text-align:left; 
  46. font-size:12px 
  47. .dragging { 
  48. FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=60); 
  49. opacity: 0.6; 
  50. moz-opacity: 0.6 
  51. </style> 
  52. <script language="javascript"
  53. var dragobj={} 
  54. window.onerror=function(){return false
  55. var domid=12 
  56. function on_ini(){ 
  57. String.prototype.inc=function(s){return this.indexOf(s)>-1?true:false
  58. var agent=navigator.userAgent 
  59. window.isOpr=agent.inc("Opera"
  60. window.isIE=agent.inc("IE") && !isOpr 
  61. window.isMoz=agent.inc("Mozilla") && !isOpr && !isIE 
  62. if(isMoz){ 
  63. Event.prototype.__defineGetter__("x",function(){return this.clientX+2}) 
  64. Event.prototype.__defineGetter__("y",function(){return this.clientY+2}) 
  65. basic_ini() 
  66. function basic_ini(){ 
  67. window.$=function(obj){return typeof(obj)=="string"?document.getElementById(obj):obj} 
  68. window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}} 
  69. window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}} 
  70. window.onload=function(){ 
  71. on_ini() 
  72. var o=document.getElementsByTagName("h1"
  73. for(var i=0;i<o.length;i++){ 
  74. o[i].onmousedown=addevent; 
  75. //添加折疊和關(guān)閉按鈕 
  76. var tt = document.createElement("div"); 
  77. tt.style.cssText = "float:left"
  78.  
  79. var span = document.createElement("span"); 
  80. span.innerHTML = "--"+o[i].innerHTML; 
  81. span.style.cssText = "cursor:default;"
  82. span.onmousedown = minusDiv; 
  83. tt.appendChild(span); 
  84.  
  85. var close = document.createElement("div"); 
  86. close.innerHTML = "X"
  87. close.style.cssText = "cursor:default;float:right"
  88. close.onmousedown = closeDiv; 
  89. o[i].innerHTML = ""
  90. o[i].appendChild(tt); 
  91. o[i].appendChild(close); 
  92. //折疊或者顯示層 
  93. function minusDiv(e) 
  94. e=e||event 
  95. var nr = this.parentNode.parentNode.nextSibling; //取得內(nèi)容層 
  96. nr.style.display = nr.style.display==""?"none":""
  97. //移出層 
  98. function closeDiv(e) 
  99. e=e||event 
  100. var mdiv = this.parentNode.parentNode; //取得目標(biāo)層 
  101. oDel(mdiv); 
  102. function addevent(e){ 
  103. if(dragobj.o!=null
  104. return false 
  105. e=e||event 
  106. dragobj.o=this.parentNode 
  107. dragobj.xy=getxy(dragobj.o) 
  108. dragobj.xx=new Array((e.x-dragobj.xy[1]),(e.y-dragobj.xy[0])) 
  109. //dragobj.o.className = 'dragging'; 
  110. dragobj.o.style.width=dragobj.xy[2]+"px" 
  111. dragobj.o.style.height=dragobj.xy[3]+"px" 
  112. dragobj.o.style.left=(e.x-dragobj.xx[0])+"px" 
  113. dragobj.o.style.top=(e.y-dragobj.xx[1])+"px" 
  114. dragobj.o.style.position="absolute" 
  115. dragobj.o.style.filter='alpha(opacity=60)'//添加拖動透明效果 
  116. var om=document.createElement("div"
  117. dragobj.otemp=om 
  118. om.style.width=dragobj.xy[2]+"px" 
  119. om.style.height=dragobj.xy[3]+"px" 
  120. om.style.border = "1px dashed red"//ikaiser添加,實(shí)現(xiàn)虛線框 
  121. dragobj.o.parentNode.insertBefore(om,dragobj.o) 
  122. return false 
  123. document.onselectstart=function(){return false
  124. window.onfocus=function(){document.onmouseup()} 
  125. window.onblur=function(){document.onmouseup()} 
  126. document.onmouseup=function(){ 
  127. if(dragobj.o!=null){ 
  128. dragobj.o.style.width="auto" 
  129. dragobj.o.style.height="auto" 
  130. dragobj.otemp.parentNode.insertBefore(dragobj.o,dragobj.otemp) 
  131. dragobj.o.style.position="" 
  132. oDel(dragobj.otemp) 
  133. dragobj={} 
  134. document.onmousemove=function(e){ 
  135. e=e||event 
  136. if(dragobj.o!=null){ 
  137. dragobj.o.style.left=(e.x-dragobj.xx[0])+"px" 
  138. dragobj.o.style.top=(e.y-dragobj.xx[1])+"px" 
  139. createtmpl(e, dragobj.o) //傳遞當(dāng)前拖動對象 
  140. function getxy(e){ 
  141. var a=new Array() 
  142. var t=e.offsetTop; 
  143. var l=e.offsetLeft; 
  144. var w=e.offsetWidth; 
  145. var h=e.offsetHeight; 
  146. while(e=e.offsetParent){ 
  147. t+=e.offsetTop; 
  148. l+=e.offsetLeft; 
  149. a[0]=t;a[1]=l;a[2]=w;a[3]=h 
  150. return a; 
  151. function inner(o,e){ 
  152. var a=getxy(o) 
  153. if(e.x>a[1] && e.x<(a[1]+a[2]) && e.y>a[0] && e.y<(a[0]+a[3])){ 
  154. if(e.y<(a[0]+a[3]/2)) 
  155. return 1; 
  156. else 
  157. return 2; 
  158. }else 
  159. return 0; 
  160. //將當(dāng)前拖動層在拖動時可變化大小,預(yù)覽效果 
  161. function createtmpl(e, elm){ 
  162. for(var i=0;i<domid;i++){ 
  163. if(document.getElementById("m"+i) == null//已經(jīng)移出的層不再遍歷 
  164. continue
  165. if($("m"+i)==dragobj.o) 
  166. continue 
  167. var b=inner($("m"+i),e) 
  168. if(b==0) 
  169. continue 
  170. dragobj.otemp.style.width=$("m"+i).offsetWidth 
  171. elm.style.width = $("m"+i).offsetWidth; 
  172. //1為下移,2為上移 
  173. if(b==1){ 
  174. $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i)) 
  175. }else
  176. if($("m"+i).nextSibling==null){ 
  177. $("m"+i).parentNode.appendChild(dragobj.otemp) 
  178. }else
  179. $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i).nextSibling) 
  180. return 
  181. for(var j=0;j<3;j++){ 
  182. if($("dom"+j).innerHTML.inc("div")||$("dom"+j).innerHTML.inc("DIV")) 
  183. continue 
  184. var op=getxy($("dom"+j)) 
  185. if(e.x>(op[1]+10) && e.x<(op[1]+op[2]-10)){ 
  186. $("dom"+j).appendChild(dragobj.otemp) 
  187. dragobj.otemp.style.width=(op[2]-10)+"px" 
  188. function add_div() 
  189. var o=document.createElement("div"
  190. o.className="mo" 
  191. o.id="m"+domid 
  192. $('dom0').appendChild(o) 
  193. o.innerHTML="<h1>dom"+domid+"</h1><div class=nr></div>" 
  194. o.getElementsByTagName("h1")[0].onmousedown=addevent 
  195. domid++ 
  196. </script> 
  197. </head> 
  198. <body> 
  199. <INPUT TYPE="button" value="添加一個新的DIV層" onclick="add_div();"
  200. <div class=content> 
  201. <div class=left id=dom0> 
  202. <div class=mo id=m0> 
  203. <h1>dom0</h1> 
  204. <div class="nr"></div> 
  205. </div> 
  206. <div class=mo id=m1> 
  207. <h1>dom1</h1><div class="nr"></div> 
  208. </div> 
  209. <div class=mo id=m2><h1>dom2</h1><div class="nr"></div></div> 
  210. <div class=mo id=m3><h1>dom3</h1><div class="nr"></div></div> 
  211. </div> 
  212. <div class=center id=dom1> 
  213. <div class=mo id=m4><h1>dom4</h1><div class="nr"></div></div> 
  214. <div class=mo id=m5><h1>dom5</h1><div class="nr"></div></div> 
  215. </div> 
  216. <div class=right id=dom2> 
  217. <div class=mo id=m8><h1>dom8</h1><div class="nr"></div></div> 
  218. <div class=mo id=m9><h1>dom9</h1><div class="nr"></div></div> 
  219. </div> 
  220. </div> 
  221. </body> 
  222. </html> 

希望本文所述對大家的javascript程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 隆安县| 蛟河市| 团风县| 乌恰县| 夏津县| 秭归县| 德格县| 锦州市| 徐闻县| 清镇市| 三亚市| 漠河县| 白河县| 台州市| 德阳市| 确山县| 新野县| 雷山县| 汝城县| 乐都县| 萨嘎县| 东兰县| 大埔县| 二连浩特市| 郁南县| 桐乡市| 定边县| 罗甸县| 南木林县| 武隆县| 阿拉尔市| 萍乡市| 馆陶县| 尚志市| 鄂州市| 安康市| 突泉县| 扶风县| 景宁| 沙坪坝区| 房产|