代码改变世界

水平走马灯特效

2009-06-23 21:56  飞逝心情  阅读(949)  评论(0编辑  收藏  举报

走马灯能够给用户在小的空间内显示多的内容的功能,同时兼有页面美观大方的特点。

由于项目需要插入水平方面的走马灯,用于显示一系列的介绍图片,研究了网上的代码,发现示例运行的有效,可到了我这里,走不了两个就要停止,经过取其中的数据进行分析发现了原因:如果需要显示的图片的总长度<走马灯区域的可见宽度,那么,走马灯一定会在小于的那个地方停止。

因此,如果图片宽度过小的话,建议不要使用走马灯,那是没有任何意义的。

好了,附上网上流传很广的走马灯示例的源码(有多广?阿里用的就是这个)

  1. <!-- 指向链接图片的URL --> 
  2. <base href="http://www.google.cn/intl/zh-CN/images/"> 
  3. <div align="center" id="demo" style="overflow:hidden;height:100px;width:1200px;border-width:1px 1px 1px 1px;border-style:dotted dotted dotted dotted;"> 
  4.   <table border="0" cellspacing="0" cellpadding="0"> 
  5.     <tr> 
  6.       <td id="demo1"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif"><img src="logo_cn.gif" border="0"></td> 
  7.       <td id="demo2"> </td> 
  8.     </tr> 
  9.   </table> 
  10. </div> 
  11. <div id="ss"></div> 
  12. <script language="javascript" type="text/javascript"> 
  13. <!--  
  14. var demo = document.getElementById("demo");  
  15. var demo1 = document.getElementById("demo1");  
  16. var demo2 = document.getElementById("demo2");  
  17. var speed=10;    //数值越大滚动速度越慢  
  18. if(demo.offsetWidth<demo1.offsetWidth)//这个判断至关重要,否则,不滚动显示重复的信息是没有意义的  
  19. {  
  20. demo2.innerHTML = demo1.innerHTML  
  21. function Marquee(){  
  22.     if(demo2.offsetWidth-demo.scrollLeft<=0)  
  23.         demo.scrollLeft-=demo1.offsetWidth  
  24.     else{  
  25.         demo.scrollLeft++  
  26.     }  
  27. }  
  28. var MyMar = setInterval(Marquee,speed);  
  29. demo.onmouseover = function(){clearInterval(MyMar)}  
  30. demo.onmouseout = function(){MyMar = setInterval(Marquee,speed)}}  
  31. --> 
  32. </script>