首页 > 语言 > JavaScript > 正文

JavaScript实现图片DIV竖向滑动的方法

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

这篇文章主要介绍了JavaScript实现图片DIV竖向滑动的方法,涉及javascript操作div层的相关技巧,需要的朋友可以参考下

本文实例讲述了JavaScript实现图片DIV竖向滑动的方法。分享给大家供大家参考。具体实现方法如下:

  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"><head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5. <title>图片滑动展示效果</title> 
  6. <script type="text/javascript"
  7. var $ = function (id) { 
  8. return "string" == typeof id ? document.getElementById(id) : id; 
  9. }; 
  10. function Event(e){ 
  11. var oEvent = document.all ? window.event : e; 
  12. if (document.all) { 
  13. if(oEvent.type == "mouseout") { 
  14. oEvent.relatedTarget = oEvent.toElement; 
  15. }else if(oEvent.type == "mouseover") { 
  16. oEvent.relatedTarget = oEvent.fromElement; 
  17. return oEvent; 
  18. function addEventHandler(oTarget, sEventType, fnHandler) { 
  19. if (oTarget.addEventListener) { 
  20. oTarget.addEventListener(sEventType, fnHandler, false); 
  21. else if (oTarget.attachEvent) { 
  22. oTarget.attachEvent("on" + sEventType, fnHandler); 
  23. else { 
  24. oTarget["on" + sEventType] = fnHandler; 
  25. }; 
  26. var Class = { 
  27. create: function() { 
  28. return function() { 
  29. this.initialize.apply(this, arguments); 
  30. Object.extend = function(destination, source) { 
  31. for (var property in source) { 
  32. destination[property] = source[property]; 
  33. return destination; 
  34.  
  35.  
  36. var GlideView = Class.create(); 
  37. GlideView.prototype = { 
  38. //容器对象 容器宽度 展示标签 展示宽度 
  39. initialize: function(obj, iHeight, sTag, iMaxHeight, options) { 
  40. var oContainer = $(obj), oThis=this, len = 0; 
  41. this.SetOptions(options); 
  42. this.Step = Math.abs(this.options.Step); 
  43. this.Time = Math.abs(this.options.Time); 
  44. this._list = oContainer.getElementsByTagName(sTag); 
  45. len = this._list.length; 
  46. this._count = len; 
  47. this._height = parseInt(iHeight / len); 
  48. this._height_max = parseInt(iMaxHeight); 
  49. this._height_min = parseInt((iHeight - this._height_max) / (len - 1)); 
  50. this._timer = null
  51. this.Each(function(oList, oText, i){ 
  52. oList._target = this._height * i;//自定义一个属性放目标left 
  53. oList.style.top = oList._target + "px"
  54. oList.style.position = "absolute"
  55. addEventHandler(oList, "mouseover"function(){ oThis.Set.call(oThis, i); }); 
  56. }) 
  57. //容器样式设置 
  58. oContainer.style.height = iHeight + "px"
  59. oContainer.style.overflow = "hidden"
  60. oContainer.style.position = "relative"
  61. //移出容器时返回默认状态 
  62. addEventHandler(oContainer, "mouseout"function(e){ 
  63. //变通防止执行oList的mouseout 
  64. var o = Event(e).relatedTarget; 
  65. if (oContainer.contains ? !oContainer.contains(o) : oContainer != o && !(oContainer.compareDocumentPosition(o) & 16)) oThis.Set.call(oThis, -1); 
  66. }) 
  67. }, 
  68. //设置默认属性 
  69. SetOptions: function(options) { 
  70. this.options = {//默认值 
  71. Step:20,//滑动变化率 
  72. Time:3,//滑动延时 
  73. TextTag:"",//说明容器tag 
  74. TextHeight: 0//说明容器高度 
  75. }; 
  76. Object.extend(this.options, options || {}); 
  77. }, 
  78. //相关设置 
  79. Set: function(index) { 
  80. if (index < 0) { 
  81. //鼠标移出容器返回默认状态 
  82. this.Each(function(oList, oText, i){ oList._target = this._height * i; if(oText){ oText._target = this._height_text; } }) 
  83. else { 
  84. //鼠标移到某个滑动对象上 
  85. this.Each(function(oList, oText, i){ 
  86. oList._target = (i <= index) ? this._height_min * i : this._height_min * (i - 1) + this._height_max; 
  87. if(oText){ oText._target = (i == index) ? 0 : this._height_text; } 
  88. }) 
  89. this.Move(); 
  90. }, 
  91. //移动 
  92. Move: function() { 
  93. clearTimeout(this._timer); 
  94. var bFinish = true;//是否全部到达目标地址 
  95. this.Each(function(oList, oText, i){ 
  96. var iNow = parseInt(oList.style.top), iStep = this.GetStep(oList._target, iNow); 
  97. if (iStep != 0) { bFinish = false; oList.style.top = (iNow + iStep) + "px"; } 
  98. }) 
  99. //未到达目标继续移动 
  100. if (!bFinish) { var oThis = thisthis._timer = setTimeout(function(){ oThis.Move(); }, this.Time); } 
  101. }, 
  102. //获取步长 
  103. GetStep: function(iTarget, iNow) { 
  104. var iStep = (iTarget - iNow) / this.Step; 
  105. if (iStep == 0) return 0; 
  106. if (Math.abs(iStep) < 1) return (iStep > 0 ? 1 : -1); 
  107. return iStep; 
  108. }, 
  109. Each:function(fun) { 
  110. for (var i = 0; i < this._count; i++) 
  111. fun.call(thisthis._list[i], (this.Showtext ? this._text[i] : null), i); 
  112. }; 
  113. </script> 
  114. <style type="text/css"
  115. #idGlideView { 
  116. height:314px; 
  117. width:325px; 
  118. margin:0 auto; 
  119. #idGlideView div { 
  120. width:325px; 
  121. height:314px; 
  122. </style> 
  123. </head> 
  124. <body> 
  125. <div id="idGlideView"
  126. <div style="background-color:#006699;"> 鼠标移到这里试试看!</div> 
  127. <div style="background-color:#FF9933;"> 鼠标移到这里试试看!</div> 
  128. </div> 
  129. <div>http://www.vevb.com/</div> 
  130. <SCRIPT> 
  131. var gv = new GlideView("idGlideView", 314, "div", 280,""); 
  132. </SCRIPT> 
  133. </body> 
  134. </html> 



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

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

图片精选