PageSourceSearch

https://pressuha.ru/templates/presuha/js/jquery.CarouselLife.js

js pressuha.ru collected 2026-09-26 07:38:39 UTC 15,188 bytes, 223 lines download raw bytes

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.