您的位置:首页   >   网站建设知识   >   jQuery深入之大图轮播原理.

jQuery深入之大图轮播原理.

日期:UPTATED:2014-02-18 | 1466 | TAG:

也是用了很久的jQuery.

最近也在写自己的那个小站。对于一些特效还是想弄清一原理。让自己对一些东西有更深入的了解。

 

说说大图轮播的原理:

1.很多时候使用方法Ul列表去展示。当然这也有一些好处,比如float对齐之类的。当然直接用p或者div也行。

2.了解overflow属性。在溢出情况下的处理。其实轮播就是在不断的处理li溢出的情况。

3 jQuery animate的动画效果。当然如果不用这个也行。一个setInterval就能搞定它。不过jQuery还是做了一些封装。

4 可能还需要一些基础的理解就是对定位的熟悉。margin和postion的了解。

5 之后就是循环轮播了,循环轮播需要对节点进行重新的修改。

   具体而言就是在轮播到最后一张图片的时候,修改节点,将第一个节点,添加到列表的最后一个位置。如下:

 

[javascript] css({'margin-left':0}).children('li').last().after($(this).children('li').first());  

 

看一下核心代码:

html:

 

[html] css:

 

 

[css] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. .list{  
  2.     width:538px;  
  3.     height:198px;  
  4.     overflow:hidden;  
  5.     margin:50px auto;  
  6. }  
  7. .list ul{  
  8.     width:2152px;  
  9.     height:198px;  
  10.     margin:0;  
  11.     padding:0;  
  12. }  
  13. .list ul li{  
  14.     float:left;  
  15.     width:538px;  
  16. }  


js:个人稍微封装了一下:

 

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. (function($){  
  2.     var silde = {  
  3.         init:function(){  
  4.             this.auto();  
  5.         },  
  6.         auto:function(){  
  7.             var _root = this,  
  8.                 $ul = $("#sidle").find("ul"),  
  9.                 $lis = $ul.children("li"),  
  10.                 width = $lis.eq(0).width();  
  11.             setInterval(function(){  
  12.                 $ul.animate({  
  13.                         'margin-left':'-'+ width +'px'  
  14.                     },  
  15.                     'slow',  
  16.                     function(){  
  17.                         //此处保证能循环轮播  
  18.                         //将已经轮播过的节点的第一张图片添加到末尾的位置  
  19.                         //再将margin-left重置为0px;  
  20.                         //这样就能一直的循环下去.  
  21.                         $ul.css({'margin-left':0}).  
  22.                             children('li').  
  23.                             last().  
  24.                             after(  
  25.                                 $ul.children('li').first()  
  26.                             );  
  27.                     });  
  28.                 },2000  
  29.             );  
  30.         }  
  31.     };  
  32.     $(function(){silde.init();})  
  33. })(jQuery);  
本文转自http://blog.csdn.net/yangzhihello/article/details/19325805