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

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

jquery carousel скриншот

Сразу же можете посмотреть как она работает. Для этого перейдите на страницу демо. Как вы видите карусель автоматом прокручивает каждые 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. Все про туризм, путешествия и активный отдых.

Последние актуальные новости Украины – политика, экономика, бизнес и финансы.