Простенькое jQuery слайдшоу

Для того, чтобы сделать у себя на сайте слайдшоу не обязательно использовать какой-нибудь плагин. Сделать простенькое слайдшоу самому очень даже просто. Что нам нужно? jQuery и небольшое знание html и CSS. Получится простенькое и довольно практичное слайдшоу, в котором можно показывать, как картинки, так и текст и много чего ещё.
Для начала создадим наш html каркас.
1 2 3 4 5 6 7 8 9 | <div id="slideshow">
<div id="slidesContainer">
<div class="slide"><!-- слайд 1 --></div>
<div class="slide"><!-- слайд 2 --></div>
<div class="slide"><!-- слайд 3 --></div>
<div class="slide"><!-- слайд 4 --></div>
</div>
</div>
<!-- Slideshow 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 | #slideshow { margin:0 auto; width:640px; height:263px; position:relative; } #slideshow #slidesContainer { margin:0 auto; width:560px; height:263px; overflow:auto; /* allow scrollbar */ position:relative; } #slideshow #slidesContainer .slide { margin:0 auto; width:540px; /* reduce by 20 pixels of #slidesContainer to avoid horizontal scroll */ height:263px; } /** * Slideshow controls style rules. */ .control { display:block; width:39px; height:263px; text-indent:-10000px; position:absolute; cursor: pointer; } #leftControl { top:0; left:0; background:transparent url(img/control_left.jpg) no-repeat 0 0; } #rightControl { top:0; right:0; background:transparent url(img/control_right.jpg) no-repeat 0 0; } |
Не забываем подключить jQuery:
1 | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> |
Ну и сам Js код:
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 | <script type="text/javascript"> $(document).ready(function(){ var currentPosition = 0; var slideWidth = 560; var slides = $('.slide'); var numberOfSlides = slides.length; // Remove scrollbar in JS $('#slidesContainer').css('overflow', 'hidden'); // Wrap all .slides with #slideInner div slides .wrapAll('<div id="slideInner"></div>') // Float left to display horizontally, readjust .slides width .css({ 'float' : 'left', 'width' : slideWidth }); // Set #slideInner width equal to total width of all slides $('#slideInner').css('width', slideWidth * numberOfSlides); // Insert controls in the DOM $('#slideshow') .prepend('<span class="control" id="leftControl">Clicking moves left</span>') .append('<span class="control" id="rightControl">Clicking moves right</span>'); // Hide left arrow control on first load manageControls(currentPosition); // Create event listeners for .controls clicks $('.control') .bind('click', function(){ // Determine new position currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1; // Hide / show controls manageControls(currentPosition); // Move slideInner using margin-left $('#slideInner').animate({ 'marginLeft' : slideWidth*(-currentPosition) }); }); // manageControls: Hides and Shows controls depending on currentPosition function manageControls(position){ // Hide left arrow if position is first slide if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() } // Hide right arrow if position is last slide if(position==numberOfSlides-1){ $('#rightControl').hide() } else{ $('#rightControl').show() } } }); </script> |
Скачать архив с примером слойдшоу можно отсюда.
