Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189446
  • 博文数量: 62
  • 博客积分: 1477
  • 博客等级: 上尉
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-11 14:28
文章分类

全部博文(62)

文章存档

2012年(62)

我的朋友

分类: 系统运维

2012-07-19 15:19:04

一个新蛋网首页多屏自动切换效果。顺便分享之。
多屏自动切换jQuery效果
思路很简单,详见代码。本来是想封装成插件的,但一想,这种效果,也不大可能同时用多个,就偷懒直接写了。相关自定义的变量都放在一起了,一些功能函数也都有注释。自测兼容性良好,若有BUG请反馈。

jQuery代码:

点击(此处)折叠或打开

  1. 01    var imgField=$('#J_imgList');
  2. 02    var imgList=$('#J_imgList>li');
  3. 03    var navField=$('#J_navList');
  4. 04    var navList=$('#J_navList>li');
  5. 05    var btnPrev=$('#J_prev');
  6. 06    var btnNext=$('#J_next');
  7. 07    var turnPage=4;//每屏显示数
  8. 08    var T=5000;//切换间隔时间
  9. 09    var turnT=300;//animate时间
  10. 10    var N=0;//图片初始索引
  11. 11    var P=1;//屏初始索引
  12. 12    
  13. 13    var goFun=null;
  14. 14    var hoverFun=null;
  15. 15    var triggerFun=null;
  16. 16    var delayFun=null
  17. 17    var navListW=navList.outerWidth(true);
  18. 18    var turnPages=Math.ceil(navList.size()/turnPage);
  19. 19    //初始图片区域高度与标题区域宽度
  20. 20    imgField.height(imgList.size()*imgList.height());
  21. 21    navField.width(navList.size()*navListW);
  22. 22    //初始自动切换
  23. 23    GO();
  24. 24    //自动切换
  25. 25    function GO() {
  26. 26     imgField.stop().animate({
  27. 27     marginTop:-N*(imgList.height())
  28. 28     },turnT);
  29. 29     navList.eq(N).addClass('hover').siblings().removeClass('hover');
  30. 30     if(N%turnPage==0) {
  31. 31     navField.stop().animate({
  32. 32     marginLeft:-N*navListW+'px'
  33. 33     },turnT);
  34. 34     }
  35. 35     N++;
  36. 36     N= N>=imgList.size()?0:N;
  37. 37     P=Math.ceil(N/turnPage);
  38. 38     goFun=setTimeout(GO,T);
  39. 39    }
  40. 40    
  41. 41    //停止切换
  42. 42    function STOP() {
  43. 43     clearTimeout(goFun);
  44. 44    }
  45. 45    
  46. 46    //标题划过移出
  47. 47    navList.hover( function() {
  48. 48     clearTimeout(delayFun);
  49. 49     STOP();
  50. 50     N=navList.index(this);
  51. 51     imgField.stop().animate({
  52. 52     marginTop:-N*(imgList.height())
  53. 53     },turnT);
  54. 54     $(this).addClass('hover').siblings().removeClass('hover');
  55. 55    }, function() {
  56. 56     N++;
  57. 57     delayFun=setTimeout(GO,T)
  58. 58    });
  59. 59    //图片划过移出
  60. 60    imgList.hover( function() {
  61. 61     N=imgList.index(this);
  62. 62     navList.eq(N).trigger('mouseover');
  63. 63    }, function() {
  64. 64     navList.eq(N).trigger('mouseleave');
  65. 65    });
  66. 66    //左切换
  67. 67    btnPrev.click( function() {
  68. 68     if(P==1) {
  69. 69     navField.animate({
  70. 70     marginLeft:-turnPage*navListW*(turnPages-1)+'px'
  71. 71     },turnT);
  72. 72     P=turnPages;
  73. 73     } else {
  74. 74     STOP();
  75. 75     P--;
  76. 76     navField.animate({
  77. 77     marginLeft:-turnPage*navListW*(P-1)+'px'
  78. 78     },turnT);
  79. 79     }
  80. 80     navList.eq((P-1)*turnPage).trigger('mouseover');
  81. 81     GO();
  82. 82    });
  83. 83    //右切换
  84. 84    btnNext.click( function() {
  85. 85     if(P==turnPages) {
  86. 86     navField.animate({
  87. 87     marginLeft:0
  88. 88     },turnT);
  89. 89     P=1;
  90. 90     } else {
  91. 91     STOP();
  92. 92     P++;
  93. 93     navField.animate({
  94. 94     marginLeft:-turnPage*navListW*P+'px'
  95. 95     });
  96. 96     }
  97. 97     navList.eq((P-1)*turnPage).trigger('mouseover');
  98. 98     GO();
  99. 99    });



阅读(1416) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~