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. Все про туризм, путешествия и активный отдых.
Последние актуальные новости Украины – политика, экономика, бизнес и финансы.
| This entry was posted by Арни Веб Дизайн on 16 Март 2010 at 20:10, and is filed under Веб дизайн. Follow any responses to this post through RSS 2.0. Вы можете оставить комментарий или трэкбэк с вашего сайта. |
1 год назад
Спасибо за урок, будем пробовать!
1 год назад
Собственно есть один вопрос: прокрутка идет линейно с лево на право. Как изменить направление. И вот еще. С последнего изображения переход идет через весь список. в обратном порядке. Как бы сделать ротацию тупо бесконечной?
1 год назад
Да…еще.. есть ли возможность выводить несколько изображений?
10 месяцев назад
Полезно. Спасибо.
10 месяцев назад
Здравствуйте! Скажите пожалуйста, у меня есть готовая карусель, изначально находящаяся в шаблоне джумла. И скорость листания слишком быстрая. Как я ни билась. ни исправляла значения – одна реакция – никаких изменений. Как сделать скорость смены медленнее?. Могу показать js. Спасибо.
8 месяцев назад
Если я не ошибаюсь, то недостает объявления классов дивов, а через джейквери присваиваются только некоторые, следует приписать классы для дивов «main_view», «image_reel», «window», «paging»