首页 > 语言 > JavaScript > 正文

JS实现带缓冲效果打开、关闭、移动一个层的方法

2024-05-06 16:19:43
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JS实现带缓冲效果打开、关闭、移动一个层的方法,涉及javascript鼠标事件及页面元素操作技巧,需要的朋友可以参考下

本文实例讲述了JS带缓冲效果打开、关闭、移动一个层的方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312"
  4. <head> 
  5. <title>JavaScript缓冲打开层</title> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/> 
  7. <style type="text/css"
  8. * { 
  9. margin:0; padding:0; 
  10. body { 
  11. margin:5px auto; text-align:center; background:#f0f0f0; 
  12. #d1 { 
  13. position:absolute; top:20px; 
  14. left:20px; width:100px; height:60px; 
  15. border:1px solid #808; 
  16. #d2 { 
  17. position:absolute; top:100px; 
  18. left:20px; width:100px; height:60px; 
  19. border:1px solid #808; 
  20. #open1, #close1, #open2, #close2 { 
  21. cursor:pointer; background:#ccf; margin:5px; 
  22. #open1, #open2 { 
  23. display:block; 
  24. #close1, #close2 { 
  25. display:none; 
  26. </style> 
  27. </head> 
  28. <body> 
  29. <div id="d1"
  30. 移动位置 
  31. <span id="open1" onclick="fo1()">Open</span> 
  32. <span id="close1" onclick="fc1()">Close</span> 
  33. </div> 
  34. <div id="d2"
  35. 改变大小 
  36. <span id="open2" onclick="fo2()">Open</span> 
  37. <span id="close2" onclick="fc2()">Close</span> 
  38. </div> 
  39. <div id="debug">AAA</div> 
  40. <script type="text/javascript"
  41. //<[CDATA[ 
  42. var sl = 20; //初始left值 
  43. var el = 500; //结束left值 
  44. var sw = 100;//初始width值 
  45. var ew = 580;//结束width值 
  46. var p = 10; //缓冲变量 
  47. var t = 20; //时间变量 
  48. var d1 = document.getElementById('d1'); 
  49. var d2 = document.getElementById('d2'); 
  50. var debug = document.getElementById('debug'); 
  51. var open1 = document.getElementById('open1'); 
  52. var close1 = document.getElementById('close1'); 
  53. var open2 = document.getElementById('open2'); 
  54. var close2 = document.getElementById('close2'); 
  55. function fo1() { 
  56. var cl = parseInt(getStyle(d1,'left')); 
  57. //当前left值 
  58. if (cl<el) { 
  59. d1.style.left = cl + Math.ceil((el-cl)/p) + 'px'
  60. //当前值+缓冲增量 
  61. debug.innerHTML = getStyle(d1,'left'); 
  62. //cl + 'px'; 
  63. setTimeout('fo1()', t); 
  64. else { 
  65. d1.style.left = el + 'px'
  66. open1.style.display = 'none'
  67. close1.style.display = 'block'
  68. function fc1() { 
  69. var cl = parseInt(getStyle(d1,'left')); 
  70. //当前left值 
  71. if (cl>sl) { 
  72. d1.style.left = cl - Math.ceil((cl-sl)/p) + 'px'
  73. //当前值-缓冲增量 
  74. debug.innerHTML = getStyle(d1,'left'); 
  75. //cl + 'px'; 
  76. setTimeout('fc1()', t); 
  77. else { 
  78. d1.style.left = sl + 'px'
  79. open1.style.display = 'block'
  80. close1.style.display = 'none'
  81. function fo2() { 
  82. var cw = parseInt(getStyle(d2,'width')); 
  83. //当前width值 
  84. if (cw<ew) { 
  85. d2.style.width = cw + Math.ceil((ew-cw)/p) + 'px'
  86. //当前值+缓冲增量 
  87. debug.innerHTML = getStyle(d2,'width'); 
  88. //cw + 'px'; 
  89. setTimeout('fo2()', t); 
  90. else { 
  91. d2.style.width = ew + 'px'
  92. open2.style.display = 'none'
  93. close2.style.display = 'block'
  94. function fc2() { 
  95. var cw = parseInt(getStyle(d2,'width')); 
  96. //当前width值 
  97. if (cw>sw) { 
  98. d2.style.width = cw - Math.ceil((cw-sw)/p) + 'px'
  99. //当前值-缓冲增量 
  100. debug.innerHTML = getStyle(d2,'width'); 
  101. //cw + 'px'; 
  102. setTimeout('fc2()', t); 
  103. else { 
  104. d2.style.width = sw + 'px'
  105. open2.style.display = 'block'
  106. close2.style.display = 'none'
  107. function getStyle( elem, name ) {  
  108. if (elem.style[name]) { return elem.style[name]; }  
  109. else if (elem.currentStyle) { return elem.currentStyle[name]; }  
  110. else if (document.defaultView && document.defaultView.getComputedStyle){ 
  111. name = name.replace(/([A-Z])/g,"-$1");  
  112. name = name.toLowerCase();  
  113. var s = document.defaultView.getComputedStyle(elem,"");  
  114. return s && s.getPropertyValue(name);  
  115. }  
  116. else { return null; }  
  117. //]]> 
  118. </script> 
  119. </body> 
  120. </html> 

希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选