1/********************************************************/ 2/* */ 3/* jquery.CarouselLifeExample.js */ 4/* Ðлагин "ÐаÑÑÑÐµÐ»Ñ Ð¾Ñ LifeExample.ru" Ð´Ð»Ñ jQuery */ 5/* ÐвÑоÑ: Ðвдеев ÐаÑк */ 6/* 2012г. */ 7/* */ 8/* ÐÐ»Ñ Ð¸Ð¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ опÑеделиÑÑ */ 9/* конÑÐµÐ¹Ð½ÐµÑ Ð¸ вложиÑÑ Ð² него маÑкеÑованнÑй ÑпиÑок: */ 10/* */ 11/* <div class="container"> */ 12/* <ul class="carousel"> */ 13/* <li>1</li> */ 14/* <li>2</li> */ 15/* <li>3</li> */ 16/* <li>4</li> */ 17/* <li>5</li> */ 18/* <li>6</li> */ 19/* </ul> */ 20/* </div> */ 21/* ÐоÑле Ñего можно ÑказаÑÑ Ð¿Ð°ÑамеÑÑÑ Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ */ 22/* плагина */ 23/* $('.container').Carousel({ */ 24/* visible: 3, //колиÑеÑÑво оÑобÑажаемÑÑ Ð¿Ð¾Ð·Ð¸Ñий 3 */ 25/* rotateBy: 1, //пÑокÑÑÑиваÑÑ Ð¿Ð¾ 1 */ 26/* speed: 1000, //ÑкоÑоÑÑÑ 1 ÑекÑнда */ 27/* btnNext: null, // кнопка впеÑед не назнаÑена */ 28/* btnPrev: null, // кнопка назад не назнаÑена */ 29/* auto: true, // авÑо пÑокÑÑÑка вклÑÑена */ 30/* margin: 10, // оÑÑÑÑп Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾Ð·Ð¸ÑиÑми */ 31/* position: "h",// ÑаÑположение по гоÑизонÑали */ 32/* dirAutoSlide: false //напÑавление Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ */ 33/* }); */ 34/* Ðли иÑполÑзоваÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ */ 35/* $('.container').Carousel(); */ 36/* */ 37/********************************************************/ 38(function($){ 39 $.fn.Carousel = function(options) { 40 // ÐаÑÑÑойки по ÑмолÑÐ°Ð½Ð¸Ñ 41 var settings = { 42 visible: 3, //колиÑеÑÑво оÑобÑажаемÑÑ Ð¿Ð¾Ð·Ð¸Ñий 3 43 rotateBy: 1, //пÑокÑÑÑиваÑÑ Ð¿Ð¾ 1 44 speed: 1000, //ÑкоÑоÑÑÑ 1 ÑекÑнда 45 btnNext: null, // кнопка впеÑед не назнаÑена 46 btnPrev: null, // кнопка назад не назнаÑена 47 auto: true, // авÑо пÑокÑÑÑка вклÑÑена 48 margin: 10, // оÑÑÑÑп Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾Ð·Ð¸ÑиÑми 49 position: "h",// ÑаÑположение по гоÑизонÑали 50 dirAutoSlide: false //напÑавление Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð² пеÑед Ð´Ð»Ñ Ð°Ð²ÑопÑокÑÑÑки 51 }; 52 53 return this.each(function() { 54 if (options) { 55 $.extend(settings, options); //ÑÑÑанавливаем полÑзоваÑелÑÑкие наÑÑÑойки 56 } 57 58 // опÑеделÑем пеÑеменнÑе 59 var $this = $(this);//ÑодиÑелÑÑкий ÑÐ»ÐµÐ¼ÐµÐ½Ñ (Ðлок в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÐºÐ°ÑÑÑелÑ) 60 var $carousel = $this.children(':first');// полÑÑаем доÑеÑний ÑÐ»ÐµÐ¼ÐµÐ½Ñ (UL) Ñ.е. ÑÐ°Ð¼Ñ ÐºÐ°ÑÑÑÐµÐ»Ñ 61 var itemWidth = $carousel.children().outerWidth()+settings.margin; // вÑÑиÑлÑем ÑиÑÐ¸Ð½Ñ ÑлеменÑа 62 var itemHeight = $carousel.children().outerHeight()+settings.margin;// вÑÑиÑлÑем вÑÑоÑÑ ÑлеменÑа 63 var itemsTotal = $carousel.children().length; // полÑÑаем обÑее колиÑеÑÑво ÑлеменÑов в каÑÑÑеле 64 var running = false; //оÑÑанавливаем пÑоÑеÑÑ 65 var intID = null; //оÑÑиÑаем инÑеÑвал 66 67 //size - ÑÐ°Ð·Ð¼ÐµÑ Ð´Ð»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ, завиÑÐ¸Ñ Ð¾Ñ Ð¾ÑиенÑаÑии каÑÑÑели 68 var size = itemWidth; 69 if(settings.position=="v") size = itemHeight; 70 71 //ÐÑли каÑÑÑÐµÐ»Ñ Ð²ÐµÑÑикалÑÐ½Ð°Ñ Ñо 72 if(settings.position=="v") 73 $this.css({ 74 'position': 'relative', // Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ð´Ð»Ñ Ð½Ð¾ÑмалÑного оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÐÐ6(7) 75 'overflow': 'hidden', // пÑÑÑем вÑе, ÑÑо не Ð²Ð»ÐµÐ·Ð°ÐµÑ Ð² конÑÐµÐ¹Ð½ÐµÑ 76 'width': itemWidth-settings.margin //ШиÑина конÑейнеÑа Ñавна ÑиÑине ÑлеменÑа 77 }); 78 else 79 $this.css({ 80 'position': 'relative', // Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ð´Ð»Ñ Ð½Ð¾ÑмалÑного оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÐÐ6(7) 81 'overflow': 'hidden', // пÑÑÑем вÑе, ÑÑо не Ð²Ð»ÐµÐ·Ð°ÐµÑ Ð² конÑÐµÐ¹Ð½ÐµÑ 82 'width': settings.visible * size + 'px' // ÑиÑÐ¸Ð½Ñ ÐºÐ¾Ð½ÑейнеÑа ÑÑавим Ñавной ÑиÑине вÑÐµÑ Ð²Ð¸Ð´Ð¸Ð¼ÑÑ ÑлеменÑов 83 }); 84 //вÑÑиÑлÑем ÑаÑÑÑоÑние оÑÑпа Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа 85 if(settings.position=="v") 86 $carousel.children('li').css({ 87 'margin-top': settings.margin/2+ 'px', 88 'margin-bottom': settings.margin/2+ 'px', 89 'float': 'left', 90 'width': '60px', 91 'height': '40px', 92 'padding': '5px', 93 'background': '#E2E2E2',
94 'font': '20px Calibry italic', 95 'color':'green', 96 'border': 'gray 1px solid' 97 }); 98 else 99 $carousel.children('li').css({ 100 'margin-left': settings.margin/2+ 'px', 101 'margin-right': settings.margin/2+ 'px', 102 103 }); 104 105 106 // в завиÑимоÑÑи Ð¾Ñ Ð¾ÑиенÑаÑии, ÑвелиÑиваем Ð´Ð»Ð¸Ð½Ñ Ð¸Ð»Ð¸ ÑиÑÐ¸Ð½Ñ ÐºÐ°ÑÑÑели 107 if(settings.position=="v") 108 $carousel.css({ 109 'position': 'relative', // ÑазÑеÑаем Ñдвиг по оÑи 110 'height': 9999 + 'px', // ÑвелиÑиваем Ð»ÐµÐ½Ñ ÐºÐ°ÑÑÑели 111 'left': 0, 112 'top': 0 113 }); 114 else 115 $carousel.css({ 116 'position': 'relative', // ÑазÑеÑаем Ñдвиг по оÑи 117 'width': 9999 + 'px', // ÑвелиÑиваем Ð»ÐµÐ½Ñ ÐºÐ°ÑÑÑели 118 'top': 0, 119 'left': 0 120 }); 121 122 123 //пÑокÑÑÑка каÑÑÑели в наÑавлении dir [true-впеÑед; false-назад] 124 function slide(dir) { 125 126 var direction = !dir ? -1 : 1; // ÑÑÑанавливаем заданное напÑавление 127 var Indent = 0; // ÑмеÑение (Ð´Ð»Ñ ul) 128 129 if (!running) { 130 // еÑли анимаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑена (или еÑе не запÑÑена) 131 running = true; // ÑÑавим Ñлажок, ÑÑо анимаÑÐ¸Ñ Ð² пÑоÑеÑÑе 132 133 if (intID) { // еÑли запÑÑен инÑеÑвал 134 window.clearInterval(intID); // оÑиÑаем инÑеÑвал 135 } 136 137 if (!dir) { // еÑли Ð¼Ñ Ð¼Ð¾Ñаем к ÑледÑÑÑÐµÐ¼Ñ ÑлеменÑÑ (Ñак по ÑмолÑаниÑ) 138 /* 139 * вÑÑавлÑем поÑле поÑледнего ÑлеменÑа каÑÑÑели 140 * ÐºÐ»Ð¾Ð½Ñ ÑÑолÑÐºÐ¸Ñ ÑлеменÑов, ÑколÑко задано 141 * в паÑамеÑÑе rotateBy (по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½ один ÑлеменÑ) 142 */ 143 144 $carousel.children(':last').after($carousel.children().slice(0,settings.rotateBy).clone(true)); 145 } else { // еÑли моÑаем к пÑедÑдÑÑÐµÐ¼Ñ ÑлеменÑÑ 146 /* 147 * вÑÑавлÑем пеÑед пеÑвÑм ÑлеменÑом каÑÑÑели 148 * ÐºÐ»Ð¾Ð½Ñ ÑÑолÑÐºÐ¸Ñ ÑлеменÑов, ÑколÑко задано 149 * в паÑамеÑÑе rotateBy (по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½ один ÑлеменÑ) 150 */ 151 $carousel.children(':first').before($carousel.children().slice(itemsTotal - settings.rotateBy, itemsTotal).clone(true)); 152 153 /* 154 * Ñдвигаем каÑÑÑÐµÐ»Ñ (<ul>) на ÑиÑинÑ/вÑÑоÑÑ ÑлеменÑа, 155 * ÑмноженнÑÑ Ð½Ð° колиÑеÑÑво ÑлеменÑов, заданнÑÑ 156 * в паÑамеÑÑе rotateBy (по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½ один ÑлеменÑ) 157 */ 158 if(settings.position=="v") 159 $carousel.css('top', -size * settings.rotateBy + 'px'); 160 else 161 $carousel.css('left', -size * settings.rotateBy + 'px'); 162 } 163 164 /* 165 * ÑаÑÑиÑÑваем ÑмеÑение 166 * ÑекÑÑее знаÑение + ÑиÑина/вÑÑоÑа одного ÑлеменÑа * колиÑеÑÑво пÑомаÑÑваемÑÑ ÑлеменÑов * на напÑавление пеÑемеÑÐµÐ½Ð¸Ñ (1 или -1) 167 */ 168 if(settings.position=="v") 169 Indent = parseInt($carousel.css('top')) + (size * settings.rotateBy * direction); 170 else 171 Indent = parseInt($carousel.css('left')) + (size * settings.rotateBy * direction); 172 173 174 if(settings.position=="v") 175 var animate_data={'top': Indent}; 176 else 177 var animate_data={'left': Indent}; 178 // запÑÑкаем анимаÑÐ¸Ñ 179 $carousel.animate(animate_data, {queue: false, duration: settings.speed, complete: function() { 180 181 // когда анимаÑÐ¸Ñ Ð·Ð°ÐºÐ¾Ð½Ñена 182 if (!dir) { // еÑли Ð¼Ñ Ð¼Ð¾Ñаем к ÑледÑÑÑÐµÐ¼Ñ ÑлеменÑÑ (Ñак по ÑмолÑаниÑ) 183 // ÑдалÑем ÑÑолÑко пеÑвÑÑ ÑлеменÑов, ÑколÑко задано в rotateBy 184 $carousel.children().slice(0, settings.rotateBy).remove(); 185 // ÑÑÑанавливаем Ñдвиг в Ð½Ð¾Ð»Ñ 186 if(settings.position=="v") 187 $carousel.css('top', 0); 188 else 189 $carousel.css('left', 0); 190 } else { // еÑли моÑаем к пÑедÑдÑÑÐµÐ¼Ñ ÑлеменÑÑ 191 // ÑдалÑем ÑÑолÑко поÑÐ»ÐµÐ´Ð½Ð¸Ñ ÑлеменÑов, ÑколÑко задано в rotateBy 192 $carousel.children().slice(itemsTotal, itemsTotal + settings.rotateBy).remove(); 193 } 194 195 if (settings.auto) { // еÑли каÑÑÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° пÑомаÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки 196 // запÑÑкаем вÑзов ÑÑнкÑии ÑеÑез инÑеÑвал вÑемени (auto) 197 intID = window.setInterval(function() { slide(settings.dirAutoSlide); }, settings.auto); 198 } 199 200 running = false; // оÑмеÑаем, ÑÑо анимаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑена 201 }}); 202 } 203 204 return false; // возвÑаÑаем false Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð½Ðµ бÑло пеÑÐµÑ Ð¾Ð´Ð° по ÑÑÑлке 205 } 206 207 // назнаÑаем обÑабоÑÑик на ÑобÑÑие click Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "впеÑед" 208 $(settings.btnNext).click(function() { 209 return slide(false); 210 }); 211 212 // назнаÑаем обÑабоÑÑик на ÑобÑÑие click Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ "Ðазад" 213 $(settings.btnPrev).click(function() { 214 return slide(true); 215 }); 216 217 if (settings.auto) { // еÑли каÑÑÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° пÑомаÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки 218 // запÑÑкаем вÑзов ÑÑнкÑии ÑеÑез вÑеменной инÑеÑвал 219 intID = window.setInterval(function() { slide(settings.dirAutoSlide); }, settings.auto); 220 } 221 }); 222 }; 223})(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.