图片轮播效果

今天有点空,写了个图片轮播的效果,使用了jq,直接上代码吧。

效果: 图片轮播图

更多特效:Jeff Zhong's Demo

html如下:

 1 <div class="wrap">
 2     <div id="leftBtn" class="btn fl"><i class="icon-left-open"></i></div>
 3     <div id="rightBtn" class="btn fr"><i class="icon-right-open"></i></div>
 4     <ul class="pics clearfix">
 5         <li><img src="http://oncse3u6r.bkt.clouddn.com/matishi5.jpg" alt="" /></li>
 6         <li><img src="http://oncse3u6r.bkt.clouddn.com/qicaidx7.jpg" alt="" /></li>
 7         <li><img src="http://oncse3u6r.bkt.clouddn.com/yueyaquan3.jpg" alt="" /></li>
 8         <li><img src="http://oncse3u6r.bkt.clouddn.com/yueliangwan3.jpg" alt="" /></li>
 9         <li><img src="http://oncse3u6r.bkt.clouddn.com/jiahe11.jpg" alt="" /></li>
10         <li><img src="http://oncse3u6r.bkt.clouddn.com/mingshashan.jpg" alt="" /></li>
11         <li><img src="http://oncse3u6r.bkt.clouddn.com/mingshashan1.jpg" alt="" /></li>
12         <li><img src="http://oncse3u6r.bkt.clouddn.com/mingshashan2.jpg" alt="" /></li>
13     </ul>
14 </div>

 

 

css如下:

 1     .wrap{
 2         width: 820px;
 3         height: 240px;
 4         padding: 30px;
 5         overflow: hidden;
 6         margin: 0 auto;
 7     }
 8     .btn{
 9         width: 30px;
10         height: 240px;
11         line-height: 240px;
12         text-align: center;
13         font-size: 20px;
14         cursor: pointer;
15     }
16     .btn:hover{
17         color: #067ab4;
18     }
19     .fl{float: left;}
20     .fr{float: right;}
21 
22     .pics{
23         list-style-type: none;
24         margin: 0 30px;
25         padding: 0;
26         position: relative;
27     }
28     .pics li{
29         position: absolute;
30         top:60px;right:380px;
31         width: 160px;
32         height: 120px;
33         background-color: #000;
34         display: none;
35         cursor: pointer;
36     }
37     .pics img{
38         width: 100%;
39         height: 100%;
40         opacity: 1;filter: alpha(opacity=100);
41     }
View Code

js如下:

  1 $(function(){
  2     //轮播使用到的5张图片
  3     var configs=[
  4         {i:2,zIndex:5,opacity: 1,animate:{top:'0',left:'220px',width:'320px',height:'240px'}},
  5         {i:1,zIndex:4,opacity: 0.5,animate:{top:'22px',left:'100px',width:'260px',height:'195px'}},
  6         {i:3,zIndex:3,opacity: 0.5,animate:{top:'22px',left:'400px',width:'260px',height:'195px'}},
  7         {i:0,zIndex:2,opacity: 0.2,animate:{top:'60px',left:'30px',width:'160px',height:'120px'}},
  8         {i:4,zIndex:1,opacity: 0.2,animate:{top:'60px',left:'570px',width:'160px',height:'120px'}}
  9     ],
 10     //隐藏的图片
 11     hid={zIndex:0,top:'60px',left:'380px',width:'160px',height:'120px',opacity: 1,display:'none'},
 12     lis=[].slice.call($('.pics li')),
 13     pLen=lis.length,
 14     cLen=configs.length,i,
 15     timer=null,
 16     isAnimating=false;
 17     //初始化
 18     function init(){
 19         if(pLen<configs.length){
 20             cLen=configs.length=pLen;
 21         }
 22         configs.sort(function(a,b){
 23             return a.i-b.i;
 24         });
 25         i=Math.floor(cLen/2);
 26         while(i--){
 27             slideRight();
 28         }
 29         animate(400);
 30     }
 31     //执行动画
 32     function animate(interval){
 33         $(lis).each(function(i,item){
 34             if(configs[i]){
 35                 $(item).attr("i",i)
 36                 .css({zIndex:configs[i].zIndex})
 37                 .animate(configs[i].animate, interval).show()
 38                 .children('img').animate({opacity:configs[i].opacity}, interval);
 39             } else {
 40                 $(item).css(hid);
 41             }
 42         });
 43     }
 44 
 45     //将元素第1项移到队列尾部从而实现向右移动的效果
 46     function slideLeft(){
 47         lis.push(lis.shift());
 48     }
 49     //将元素最后1项移到队列头部从而实现向左移动的效果
 50     function slideRight(){
 51         lis.unshift(lis.pop());
 52     }
 53     //自动轮播
 54     function next(){
 55         timer=setInterval(function(){
 56             slideLeft();
 57             animate(400);
 58         },2000);
 59     }
 60 
 61     //绑定向左向右事件
 62     //鼠标移入,清除自动播放,移开时添加自动播放,点击执行向/左向右滚动
 63     //同时控制点击间隔为300ms
 64     $('#leftBtn,#rightBtn').click(function(event){
 65         if(isAnimating){return;}
 66         if(this.id=='leftBtn'){
 67             slideLeft();    
 68         } else {
 69             slideRight();
 70         }
 71         
 72         animate(400);
 73         isAnimating=true;
 74         setTimeout(function(){
 75             isAnimating=false;
 76         },300);
 77     }).mouseover(function(){
 78         clearInterval(timer);
 79     }).mouseout(next);
 80     
 81     //鼠标移入ul时,清除自动播放,移开时添加自动播放
 82     $('.pics').mouseover(function() {
 83         clearInterval(timer);
 84     }).mouseout(next);
 85 
 86     //点击两侧的图片将立即移动到中间显示
 87     $('.pics').on('click', 'li', function(event) {
 88         var index=$(this).attr('i'),
 89             interval=300,
 90             len=0;
 91 
 92         index=index-Math.floor(cLen/2);//在图片到正中间隔着几张
 93 
 94         if(index==0) return;//点到的是正在最前面展示的图片
 95         len=Math.abs(index);//动画要执行的次数
 96         interval=Math.floor(interval/len);//动画间隔
 97 
 98         while(len--){
 99             if(index<0){
100                 slideRight();
101             } else {
102                 slideLeft();
103             }
104             animate(interval);
105         }
106     });
107 
108     init();
109     next();
110 });

 

 

posted @ 2014-10-31 23:00  Jeff.Zhong  阅读(958)  评论(0编辑  收藏  举报