js 3 D画像重畳回転切替

69935 ワード

今回自分で一回jsロジックの造作の练习をして、効果はyoukuのドラマのチャンネルの焦点図をまねるので、优酷なもとの効果の住所:http://tv.youku.com/
js 3D图片叠加旋转切换
今日の練習結果のコード:
  1 <!doctype html>

  2 <html>

  3 <head>

  4 <meta charset="utf-8">

  5 <title>     </title>

  6 <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

  7 <script>

  8 (function(){

  9     $(function(){

 10     //   

 11     var btnLeft=$('.btnLeft');//    

 12     var btnRight=$('.btnRight');//    

 13     var arrUl=$('#arrLi');

 14     var arrLi=$('#arrLi>li');

 15     var btnLi=$('#btnLi>li');

 16     var arrSort=[];

 17     var kai=true;//  

 18     //        ,    2        ,      

 19     var pos=[

 20         {width:'430px',height:'182px',left:'-430px',top:'55px',zindex:1,opacity:0},

 21         {width:'530px',height:'224px',left:'0px',top:'22px',zindex:2,opacity:1},

 22         {width:'640px',height:'270px',left:'275px',top:'0px',zindex:4,opacity:1},

 23         {width:'530px',height:'224px',left:'660px',top:'22px',zindex:2,opacity:1},

 24         {width:'430px',height:'182px',left:'1190px',top:'55px',zindex:1,opacity:0},        

 25     ]

 26     /*       ,     li   arrSort */

 27     for(var i=0;i<5;i++){

 28         $(arrLi[i]).css({

 29             'width':pos[i].width,

 30             'height':pos[i].height,

 31             'left':pos[i].left,

 32             'top':pos[i].top,

 33             'z-index':pos[i].zindex,

 34             'opacity':pos[i].opacity

 35         });    

 36     }

 37     var oPath=parseInt(arrLi.eq(2).attr('data-num'));

 38     moveClass(oPath);

 39     for(var i=0;i<5;i++){

 40         arrSort.push(arrLi[i])

 41     }

 42     //     

 43     btnRight.on('click',function(){

 44         //                    ,     ,             

 45         if(kai){

 46             kai=false;

 47             

 48             doPrev();

 49             setTimeout(function(){kai=true;},500);

 50             //   setTimeout   ,

 51             //    bug,      

 52         }

 53         

 54     });

 55     //     

 56     btnLeft.on('click',function(){

 57         //                    ,     ,             

 58         if(kai){

 59             

 60             kai=false;

 61             doNext();

 62 

 63             setTimeout(function(){kai=true;},500)

 64         }

 65         

 66     });

 67     //btn  

 68     btnLi.on('click',function(){

 69         

 70         var _index=$(this).index();

 71         var _imgIndex=addCenter(_index);//          ,        index ,    arrSort  

 72         switch(_imgIndex){

 73             case 0:

 74                 for(var i=0;i<2;i++){

 75                     doNext();    

 76                 }

 77             break;

 78             case 1:

 79                 doNext();    

 80             break;

 81             case 2:

 82                 return;

 83             break;

 84             case 3:

 85                 doPrev();

 86             break;

 87             case 4:

 88                 for(var i=0;i<2;i++){

 89                 doPrev();

 90                 }

 91             break;

 92             

 93                 

 94         }        

 95     });

 96     //            

 97     function doPrev(){

 98         

 99         arrSort.push(arrSort.shift());

100         doMove();

101     };

102     //            

103     function doNext(){

104         

105         arrSort.unshift(arrSort.pop());

106         doMove();

107         

108     };

109     //    ,        ,  animate

110     function doMove(){

111       arrUl.append(arrSort);

112       for(var i=0;i<5;i++){

113               $(arrSort[i]).css('z-index',pos[i].zindex);

114               $(arrSort[i]).stop().animate({

115               'width':pos[i].width,

116               'height':pos[i].height,

117               'left':pos[i].left,

118               'top':pos[i].top,

119               'opacity':pos[i].opacity,

120               },500);      

121        }

122         var _index=parseInt($(arrSort[2]).attr('data-num'));

123         moveClass(_index);

124     }

125     //   btn  class

126     function moveClass(oindex){

127         btnLi.removeClass('active');

128         btnLi.eq(oindex).addClass('active');    

129     }

130     //

131     function addCenter(index){

132         var _imgIndex=0;

133         arrLi.each(function(){

134             var num=$(this).attr('data-num');

135             if(num==index){

136                 _imgIndex=$(this).index();

137             }

138             

139         });

140         return _imgIndex;

141     }

142 });    

143 })()

144 </script>

145 </head>

146 <style>

147 *{margin:0;padding:0;}

148 li{list-style:none;}

149 .container{width:1190px;height:310px;margin:10px auto;position:relative;overflow:hidden;}

150 .btnLeft{width:275px;height:225px;position:absolute;left:0px;top:22px;z-index:3;background:url(http://res.mfs.ykimg.com/0510000051AD63E96714C04A1400547A) no-repeat 7px 89px;

151 cursor:pointer;z-index:6;}

152 .btnRight{width:275px;height:225px;position:absolute;right:0px;top:22px;z-index:3;background:url(http://res.mfs.ykimg.com/0510000051AD63F56714C04A1305CFEF) no-repeat 219px 89px;

153 cursor:pointer;z-index:6;}

154 .container ul{width:100%;height:270px;position:relative;}

155 .container ul li{position:absolute;width:0px;height:0px;left:595px;top:135px;overflow:hidden;box-shadow:1px 5px 3px #ccc;}

156 .container ul li img{width:100%;height:auto;}

157 .container ol{padding-left:552px;margin-top:10px;}

158 .container ol li{width:10px;height:10px;display:block;background:#ccc;border-radius:6px;margin:0px 3px;text-indent:-9999px;float:left;cursor:pointer;}

159 .container ol .active{background:#69aaec;}

160 </style>

161 <body>

162 <div class="container">

163     <span class="btnLeft"></span>

164     <span class="btnRight"></span>

165 

166     <ul id="arrLi">

167         <li data-num="3"><a href="#"><img src="http://r4.ykimg.com/051000005458453B6737B36F870BBE71"/></a></li>

168         <li data-num="4"><a href="#"><img src="http://r3.ykimg.com/05100000544490016737B35A220433C1"/></a></li>

169         <li data-num="0"><a href="#"><img src="http://r1.ykimg.com/051000005469ACA06737B359A40BCB53"/></a></li>

170         <li data-num="1"><a href="#"><img src="http://r1.ykimg.com/05100000546022E46737B35DAC0A11F8"/></a></li>

171         <li data-num="2"><a href="#"><img src="http://r1.ykimg.com/051000005434B8006737B371DF016067"/></a></li>

172     </ul>

173     <ol id="btnLi">

174         <li class="active">0</li>

175         <li>1</li>  

176         <li>2</li>   

177         <li>3</li>

178         <li>4</li>

179     </ol>

180 </div>

181 </body>

182 </html>