Automatic Image Slider – jQuery карусель
Недавно лазил по разным веб дизайнерским сайтам и набрел на Automatic Image Slider – по русски jQuery карусель, которая автоматически прокручивает картинки. Или сам пользователь может нажимать на кнопочки, тем самым просматривая картинки превьюшки, на которых обычно размещают самую важную и новую информацию на сайте.
Вот сейчас мы такую карусель и сделаем. Я покажу вам как она работает и подробно расскажу как воплотить эту карусель к себе на сайт или блог. Кстати именно эта карусель сейчас стоит на главной странице zavrab.ru.

Сразу же можете посмотреть как она работает. Для этого перейдите на страницу демо. Как вы видите карусель автоматом прокручивает каждые 5-7 секунд картинки, а также есть кнопочки 1-2-3-4, нажимая на которые можно просматривать заголовки и картинки актуальных статей. При нажатии на картинку-ссылку вы перейдете на другую веб-страницу.
Как же сделать такую карусель у себя на сайте? Для этого достаточно разместить на сайте небольшой блок HTML-кода, дополнить CSS файл стилями, необходимыми для нормального отображения и настроек карусели, а также прописать js-код.
Вот какой код требуется прописать на веб странице, я лично посоветую вам использовать в адресах картинок абсолютные пути (например http://arniwebdesign.com/image.jpg – это абсолютный путь к картинке).
1 2 3 4 5 6 7 8 9 10 11 12 | <div> <div> <div><a href="#"><img src="reel_1.jpg" alt="" /></a> <a href="#"><img src="reel_2.jpg" alt="" /></a> <a href="#"><img src="reel_3.jpg" alt="" /></a> <a href="#"><img src="reel_4.jpg" alt="" /></a></div> </div> <div><a rel="1" href="#">1</a> <a rel="2" href="#">2</a> <a rel="3" href="#">3</a> <a rel="4" href="#">4</a></div> </div> |
Этот HTML-код отвечает за вывод карусели на сайте. Следующий CSS код отвечает за преображение блока картинок так, как нам это необходимо. Позже расскажу как можно будет изменить его для своих нужд.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /*--Main Container--*/ .main_view { float: left; position: relative; } /*--Window/Masking Styles--*/ .window { height:286px; width: 790px; overflow: hidden; /*--Hides anything outside of the set width/height--*/ position: relative; } .image_reel { position: absolute; top: 0; left: 0; } .image_reel img {float: left;} /*--Paging Styles--*/ .paging { position: absolute; bottom: 40px; right: -7px; width: 178px; height:47px; z-index: 100; /*--Assures the paging stays on the top layer--*/ text-align: center; line-height: 40px; background: url(paging_bg2.png) no-repeat; display: none; /*--Hidden by default, will be later shown with jQuery--*/ } .paging a { padding: 5px; text-decoration: none; color: #fff; } .paging a.active { font-weight: bold; background: #920000; border: 1px solid #610000; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; } .paging a:hover {font-weight: bold;} |
Идем дальше. Это мы прописали код для визуального отображения карусели. Дальше нам надо прописать javascript код для функционирования карусели – автоматической прокрутки и вообще прокрутки картинок.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { //Set Default State of each portfolio piece $(".paging").show(); $(".paging a:first").addClass("active"); //Get size of images, how many there are, then determin the size of the image reel. var imageWidth = $(".window").width(); var imageSum = $(".image_reel img").size(); var imageReelWidth = imageWidth * imageSum; //Adjust the image reel to its new size $(".image_reel").css({'width' : imageReelWidth}); //Paging + Slider Function rotate = function(){ var triggerID = $active.attr("rel") - 1; //Get number of times to slide var image_reelPosition = triggerID * imageWidth; //Determines the distance the image reel needs to slide $(".paging a").removeClass('active'); //Remove all active class $active.addClass('active'); //Add active class (the $active is declared in the rotateSwitch function) //Slider Animation $(".image_reel").animate({ left: -image_reelPosition }, 500 ); }; //Rotation + Timing Event rotateSwitch = function(){ play = setInterval(function(){ //Set timer - this will repeat itself every 3 seconds $active = $('.paging a.active').next(); if ( $active.length === 0) { //If paging reaches the end... $active = $('.paging a:first'); //go back to first } rotate(); //Trigger the paging and slider function }, 7000); //Timer speed in milliseconds (3 seconds) }; rotateSwitch(); //Run function on launch //On Hover $(".image_reel a").hover(function() { clearInterval(play); //Stop the rotation }, function() { rotateSwitch(); //Resume rotation }); //On Click $(".paging a").click(function() { $active = $(this); //Activate the clicked paging //Reset Timer clearInterval(play); //Stop the rotation rotate(); //Trigger rotation immediately rotateSwitch(); // Resume rotation return false; //Prevent browser jump to link anchor }); }); </script> |
Можно вставить этот код рядом с HTML кодом карусели, однако вообще рекомендую поставить его между тегами <head> </head> так как именно там и должен быть размещен javascript.
Теперь можно попробовать – работает ли он на вашем сайте. У меня лично заработал и это вы можете увидеть на сайте zavrab.ru, правда я уменьшил размеры картинок, как раз под дизайн своего бывшего блога (мой новый блог zavrab.com).
У вас сразу же наверное возникли вопросы – можно ли изменить код карусели так, как нам этого хочется? – Конечно можно. Можно изменить размеры отображаемой картинки, можно изменить скорость прокрутки карусели и время отображения картинки.
За паузу между сменами кадров (картинок) отвечает 41я строка js кода, 7000 миллисекунд – это 7 секунд пауза перед тем как картинка перекрутится на следующую.
41 | }, 7000); //Timer speed in milliseconds (3 seconds) |
За скорость прокрутки отвечает 29я строка js кода, также в миллисекундах, чем меньше значение – тем быстрее картинка прокрутится на следующую.
29 | }, 500 ); |
Для изменения ширины и высоты карусельного блока надо подправить 8ю строку CSS кода, который вы видите выше.
8 | height:286px; width: 790px; |
Также можно высоту панели с кнопочками, это прописано в 21й строке CSS кода в свойстве bottom – 40 пикселей от низа картинки.
21 | bottom: 40px; right: -7px; |
Хотя если вы знаете CSS то вам не составит труда самим покопаться в коде и подрихтовать карусель под свои нужды.
Всем удачи!
Заводской раб.
Все про альпинизм, скалолазание и туризм на сайте climber.org.ua. Все про туризм, путешествия и активный отдых.
Последние актуальные новости Украины – политика, экономика, бизнес и финансы.




(2 votes, average: 5,00 out of 5)
6 comments
Rostislava says:
Мар 19, 2010
Спасибо за урок, будем пробовать!
Lexeus says:
Апр 17, 2010
Собственно есть один вопрос: прокрутка идет линейно с лево на право. Как изменить направление. И вот еще. С последнего изображения переход идет через весь список. в обратном порядке. Как бы сделать ротацию тупо бесконечной?
Lexeus says:
Апр 17, 2010
Да…еще.. есть ли возможность выводить несколько изображений?
Федор says:
Мар 18, 2011
Полезно. Спасибо.
Полина says:
Апр 11, 2011
Здравствуйте! Скажите пожалуйста, у меня есть готовая карусель, изначально находящаяся в шаблоне джумла. И скорость листания слишком быстрая. Как я ни билась. ни исправляла значения – одна реакция – никаких изменений. Как сделать скорость смены медленнее?. Могу показать js. Спасибо.
SLEEPwalker says:
мая 25, 2011
Если я не ошибаюсь, то недостает объявления классов дивов, а через джейквери присваиваются только некоторые, следует приписать классы для дивов «main_view», «image_reel», «window», «paging»