1/** 2 * jQuery PicCarousel.js 3 * Version 0.1.4 4 * 5 * https://github.com/javion25/PicCarousel.js 6 * MIT licensed 7 * 8 * Copyright (C) 2015 Javion.com - A project by Javion 9 */ 10;(function($){ 11 12 //å®ä¹PicCarouselç±» 13 var PicCarousel = (function(){ 14 15 //å®ä¹PicCarouselçæé 彿° 16 function PicCarousel(element,options){ 17 this.settings = $.extend(true,$.fn.PicCarousel.defaults,options||{}); 18 this.element = element; 19 this.init(); 20 } 21 22 //å®ä¹PicCarouselçæ¹æ³ 23 PicCarousel.prototype = { 24 /*说æï¼åå§åæä»¶*/ 25 init:function(){ 26 var me = this; 27 me.poster = me.element; 28 me.posterItemMain = me.poster.find("ul.poster-list"); 29 me.nextBtn = me.poster.find("div.poster-next-btn"); 30 me.prevBtn = me.poster.find("div.poster-prev-btn"); 31 me.posterItems = me.poster.find("li.poster-item"); 32 33 if(me.posterItems.size()%2 == 0){ 34 me.posterItemMain.append(me.posterItems.ep(0).clone()); 35 me.posterItems = me.posterItemMain.children; 36 } 37 38 me.posterFirstItem = me.posterItems.first(); 39 me.posterLastItem = me.posterItems.last(); 40 me.rotateFlag =true; 41 42 //设置é ç½®åæ°å¼ 43 me.setSettingValue(); 44 me.setPosterPost(); 45 46 me.nextBtn.click(function(){ 47 if(me.rotateFlag){ 48 me.rotateFlag = false; 49 me.carouseRotate("left"); 50 }; 51 }); 52 53 me.prevBtn.click(function(){ 54 if(me.rotateFlag){ 55 me.rotateFlag = false; 56 me.carouseRotate("right"); 57 }; 58 }); 59 60 //æ¯å¦å¼å¯èªå¨ææ¾ 61 if(me.settings.autoPlay){ 62 me.autoPlay(); 63 me.poster.hover(function(){ 64 window.clearInterval(me.timer); 65 },function(){ 66 me.autoPlay(); 67 }); 68 } 69 }, 70 71 //èªå¨ææ¾æ¹æ³ 72 autoPlay:function(){ 73 var me = this; 74 me.timer = window.setInterval(function(){ 75 me.nextBtn.click(); 76 },me.settings.delay); 77 }, 78 79 //æè½¬æ¹æ³ 80 carouseRotate:function(dir){ 81 var me = this; 82 var zIndexArr = []; 83 if(dir === "left"){ 84 me.posterItems.each(function(){ 85 var self = $(this), 86 prev = self.prev().get(0)?self.prev():me.posterLastItem, 87 width = prev.width(), 88 height = prev.height(), 89 zIndex = prev.css("zIndex"), 90 opacity = prev.css("opacity"), 91 left = prev.css("left"), 92 top = prev.css("top"); 93 zIndexArr.push(zIndex); 94 self.animate({ 95 width:width, 96 height:height, 97 opacity:opacity, 98 left:left, 99 top:top 100 },me.settings.speed,function(){ 101 me.rotateFlag = true; 102 }); 103 }); 104 me.posterItems.each(function(i){ 105 $(this).css("zIndex",zIndexArr[i]); 106 }) 107 }else if(dir === "right"){ 108 me.posterItems.each(function(){ 109 var self = $(this), 110 next = self.next().get(0)?self.next():me.posterFirstItem, 111 width = next.width(), 112 height = next.height(), 113 zIndex = next.css("zIndex"), 114 opacity = next.css("opacity"), 115 left = next.css("left"), 116 top = next.css("top"); 117 zIndexArr.push(zIndex); 118 self.animate({ 119 width:width, 120 height:height, 121 opacity:opacity, 122 left:left, 123 top:top 124 },me.settings.speed,function(){ 125 me.rotateFlag = true; 126 }); 127 }); 128 me.posterItems.each(function(i){ 129 $(this).css("zIndex",zIndexArr[i]); 130 }) 131 } 132 }, 133 134 //设置å©ä½ç帧çä½ç½®å ³ç³» 135 setPosterPost:function(){ 136 var me = this; 137 var sliceItems = me.posterItems.slice(1), 138 sliceSize = sliceItems.size()/2, 139 rightSlice = sliceItems.slice(0,sliceSize), 140 level = Math.floor(me.posterItems.size()/2), 141 leftSlice = sliceItems.slice(sliceSize); 142 143 //设置å³è¾¹å¸§çä½ç½®å ³ç³»å宽度ãé«åº¦ãtop... 144 var rw = me.settings.posterWidth, 145 rh = me.settings.posterHeight, 146 //((容å¨å®½-帧宽)/2)/å±çº§ 190 147 gap = ((me.settings.width-me.settings.posterWidth)/2)/level; 148 149 var firstLeft = (me.settings.width-me.settings.posterWidth)/2;
150 var fixOffsetLeft = firstLeft + rw; 151 152 //设置å³è¾¹çä½ç½®å ³ç³» 153 rightSlice.each(function(i){ 154 level--; 155 rw = rw*me.settings.scale; 156 rh = rh*me.settings.scale; 157 var j=i; 158 $(this).css({ 159 zIndex:level, 160 width:rw, 161 height:rh, 162 opacity:1/(++j), 163 left:fixOffsetLeft+(++i)*gap-rw, 164 top:me.setVertucalAlign(rh) 165 }); 166 167 }); 168 169 //设置左边çä½ç½®å ³ç³» 170 var lw = rightSlice.last().width(), 171 lh = rightSlice.last().height(), 172 oloop = Math.floor(me.posterItems.size()/2); 173 174 leftSlice.each(function(i){ 175 $(this).css({ 176 zIndex:i, 177 width:lw, 178 height:lh, 179 opacity:1/oloop, 180 left:i*gap, 181 top:me.setVertucalAlign(lh) 182 }); 183 184 lw = lw/me.settings.scale; 185 lh = lh/me.settings.scale; 186 oloop--; 187 }); 188 }, 189 190 //设置åç´æåå¯¹é½ 191 setVertucalAlign:function(height){ 192 var me = this; 193 var verticalType = me.settings.verticalAlign, 194 top = 0; 195 196 if(verticalType === "middle"){ 197 top = (me.settings.height - height)/2; 198 }else if(verticalType === "top"){ 199 top = 0; 200 }else if(verticalType === "bottom"){ 201 top = me.settings.height - height; 202 }else{ 203 top = (me.settings.height-height)/2; 204 }; 205 206 return top; 207 }, 208 209 //é ç½®å·¦å³æé®å第ä¸å¸§ä½ç½® 210 setSettingValue:function(){ 211 var me = this; 212 me.poster.css({ 213 width:me.settings.width, 214 height:me.settings.height 215 }); 216 217 me.posterItemMain.css({ 218 width:me.settings.width, 219 height:me.settings.height 220 }); 221 222 //计ç®å·¦å³åæ¢æé®ç宽度 223 var w = (me.settings.width-me.settings.posterWidth)/2; 224 225 me.nextBtn.css({ 226 width:w, 227 height:me.settings.height, 228 zIndex:Math.ceil(me.posterItems.size()/2) 229 }); 230 me.prevBtn.css({ 231 width:w, 232 height:me.settings.height, 233 zIndex:Math.ceil(me.posterItems.size()/2) 234 }); 235 me.posterFirstItem.css({ 236 width:me.settings.posterWidth, 237 height:me.settings.posterHeight, 238 top: me.setVertucalAlign(me.settings.posterHeight), 239 left:w, 240 zIndex:Math.floor(me.posterItems.size()/2) 241 }); 242 } 243 }; 244 return PicCarousel; 245 })(); 246 247 //å便¨¡å¼,æ·»å PicCarouselæ¹æ³ 248 $.fn.PicCarousel = function(options){ 249 return this.each(function(){ 250 var me = $(this), 251 instance = me.data("PicCarousel"); 252 if(!instance){ 253 instance = new PicCarousel(me,options); 254 me.data("PicCarousel",instance); 255 } 256 }); 257 }; 258 259 260}(jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.