jquery.ylmarquee.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. (function($) {
  2. $.fn.jMarquee = function(o) {
  3. o = $.extend({
  4. speed:30,
  5. step:1,//滚动步长
  6. direction:"up",//滚动方向
  7. visible:3//可见元素数量
  8. }, o || {});
  9. //获取滚动内容内各元素相关信息
  10. var i=0;
  11. var div=$(this);
  12. var ul=$("ul",div);
  13. var tli=$("li",ul);
  14. var liSize=tli.size();
  15. if(o.direction=="left")
  16. tli.css("float","left");
  17. var liWidth=tli.innerWidth();
  18. var liHeight=tli.height();
  19. var ulHeight=liHeight*liSize;
  20. var ulWidth=liWidth*liSize;
  21. //如果对象元素个数大于指定的显示元素则进行滚动,否则不滚动。
  22. if(liSize>o.visible){
  23. ul.append(tli.slice(0,o.visible).clone()) //复制前o.visible个li,并添加到ul的最后
  24. li=$("li",ul);
  25. liSize=li.size();
  26. //给滚动内容添加相关CSS样式
  27. div.css({"position":"relative",overflow:"hidden"});
  28. ul.css({"position":"relative",margin:"0",padding:"0","list-style":"none"});
  29. li.css({margin:"0",padding:"0","position":"relative"});
  30. switch(o.direction){
  31. case "left":
  32. div.css("width",(liWidth*o.visible)+"px");
  33. ul.css("width",(liWidth*liSize)+"px");
  34. li.css("float","left");
  35. break;
  36. case "up":
  37. div.css({"height":(liHeight*o.visible)+"px"});
  38. ul.css("height",(liHeight*liSize)+"px");
  39. break;
  40. }
  41. var MyMar=setInterval(ylMarquee,o.speed);
  42. ul.hover(
  43. function(){clearInterval(MyMar);},
  44. function(){MyMar=setInterval(ylMarquee,o.speed);}
  45. );
  46. };
  47. function ylMarquee(){
  48. if(o.direction=="left"){
  49. if(div.scrollLeft()>=ulWidth){
  50. div.scrollLeft(0);
  51. }
  52. else
  53. {
  54. var leftNum=div.scrollLeft();
  55. leftNum+=parseInt(o.step);
  56. div.scrollLeft(leftNum)
  57. }
  58. }
  59. if(o.direction=="up"){
  60. if(div.scrollTop()>=ulHeight){
  61. div.scrollTop(0);
  62. }
  63. else{
  64. var topNum=div.scrollTop();
  65. topNum+=parseInt(o.step);
  66. div.scrollTop(topNum);
  67. }
  68. }
  69. };
  70. };
  71. })(jQuery);