轮播的原理:
1.很多时候使用ul列表去展示,这有一些好处,比如float对齐之类的,当然直接用p或者div也行。
2.了解overflow属性。在溢出情况下的处理。其实轮播就是不断的处理li溢出的情况。
3.jQuery animate的动画效果。也可以使用setInterval。
4.对定位的了解,margin和position。
5.循环轮播。需要对节点进行重新的修改。
具体而言就是在轮播到最后一张图片的时候,修改节点,将第一个节点,添加到列表的最后一个位置。
如下:
1 2
| $(this).css({'margin-left':0}).children('li').last() .after($(this).children('li').first());
|
以下为实现代码
html代码
1 2 3 4 5 6 7 8
| <div class="list" id="slide"> <ul> <li><img src = "1.jpg" width="538" height="198"/></li> <li><img src = "2.jpg" width="538" height="198"/></li> <li><img src = "3.jpg" width="538" height="198"/></li> <li><img src = "4.jpg" width="538" height="198"/></li> </ul> </div>
|
css样式
1 2 3
| .list{width:538px;height:198px;overflow:hidden;margin:50px auto;} .list ul{width:2152px;height:198px;margin:0;padding:0;} .list ul li{float:left;width:538px;}
|
javascript代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| (function($){ var silde = { init:function(){ this.auto(); }, auto:function(){ var _root = this, $ul = $("#sidle").find("ul"), $lis = $ul.children("li"), width = $lis.eq(0).width(); setInterval(function(){ $ul.animate({'margin-left':'-'+ width +'px'}, 'slow', function(){ $ul.css({'margin-left':0}).children('li').last() .after($ul.children('li').first()); }); },2000); } }; $(function(){silde.init();}) })(jQuery);
|
效果展示:点击demo
另外,看到一个封装很好的轮播组件,代码写的很漂亮,效果:点击demo
参考:javascript仿QQ滑动菜单
参考资料
jQuery深入之大图轮播原理!