jQuery карусель (Automatic Image Slider)

005.jpgНедавно лазил по разным веб дизайнерским сайтам и набрел на Automatic Image Slider — по русски jQuery карусель, которая автоматически прокручивает картинки. Или сам пользователь может нажимать на кнопочки, тем самым просматривая картинки превьюшки, на которых обычно размещают самую важную и новую информацию на сайте.

Вот сейчас мы такую карусель и сделаем. Я покажу вам как она работает и подробно расскажу как воплотить эту карусель к себе на сайт или блог.

Сразу же можете посмотреть как она работает. Для этого перейдите на страницу демо. Как вы видите карусель автоматом прокручивает каждые 5-7 секунд картинки, а также есть кнопочки 1-2-3-4, нажимая на которые можно просматривать заголовки и картинки актуальных статей. При нажатии на картинку-ссылку вы перейдете на другую веб-страницу.

carousel.jpg

Как же сделать такую карусель у себя на сайте? Для этого достаточно разместить на сайте небольшой блок HTML-кода, дополнить CSS файл стилями, необходимыми для нормального отображения и настроек карусели, а также прописать js-код.

Вот какой код требуется прописать на веб странице, я лично посоветую вам использовать в адресах картинок абсолютные пути (например https://maksis.ru/image.jpg — это абсолютный путь к картинке).

<div class="container">
<div class="folio_block">
<div class="main_view">
<div class="window">
<div class="image_reel">
<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 class="paging">
<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>
</div>
</div>
</div>

Этот HTML-код отвечает за вывод карусели на сайте. Следующий CSS код отвечает за преображение блока картинок так, как нам это необходимо. Позже расскажу как можно будет изменить его для своих нужд.

body {
background: #222;
margin: 0; padding: 0;
font: normal 10px Verdana, Arial, Helvetica, sans-serif;
}
*{outline: none;}
img {border: 0;}
.container {
width: 790px;
padding: 0;
margin: 0 auto;
}
.folio_block {
position: absolute;
left: 50%; top: 50%;
margin: -140px 0 0 -395px;
}
/*--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 код для функционирования карусели — автоматической прокрутки и вообще прокрутки картинок.

<script type="text/javascript" src="https://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.

Теперь можно попробовать — работает ли он на вашем сайте. У меня лично заработал и напомню еще раз, это вы можете увидеть вот здесь.

У вас сразу же наверное возникли вопросы — можно ли изменить код карусели так, как нам этого хочется? — Конечно можно. Можно изменить размеры отображаемой картинки, можно изменить скорость прокрутки карусели и время отображения картинки.

За паузу между сменами кадров (картинок) отвечает 41я строка js кода, 7000 миллисекунд — это 7 секунд пауза перед тем как картинка перекрутится на следующую.

}, 7000); //Timer speed in milliseconds (3 seconds)

За скорость прокрутки отвечает 29я строка js кода, также в миллисекундах, чем меньше значение — тем быстрее картинка прокрутится на следующую.

}, 500 );

Для изменения ширины и высоты карусельного блока надо подправить 8ю строку CSS кода, который вы видите выше.

height:286px; width: 790px;

Также можно высоту панели с кнопочками, это прописано в 21й строке CSS кода в свойстве bottom — 40 пикселей от низа картинки.

bottom: 40px; right: -7px;

Хотя если вы знаете CSS то вам не составит труда самим покопаться в коде и подрихтовать карусель под свои нужды.

h++p://arniwebdesign.com/automatic-image-slider-jquery-karusel/

3 комментария

  1. Подскажите (абсолютному новичку в этом вопросе), как сделать так, чтобы это работало и в IE… чтобы окно «блокировка активного содержимого» не всплывало… ваш код в «демо» работает и в IE, копирую его к себе — меняю картинки — вставляю в свой сайт и вот эта блокировка… понятно, что 90% пользователей не будут ее отключать и следовательно не увидят сайт… как вы ее обходите — расскажите подробно-популярно-по-русски… Пожалуйста!!!

  2. Виталий, к сожалению я сам в друпале плохо ориентируюсь. Буду признателен, если Вы сами напишите ответ на свой вопрос, как разберетесь…

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


десять + 20 =