Это не самый простой слайдер, но я думаю, что его легче всего понять. jsFiddle
HTML:
<ul id="gallery">
<li> <img src="http://lorempixel.com/output/people-q-c-640-480-5.jpg" title="Title #0"/> </li>
<li> <img src="http://lorempixel.com/output/abstract-q-c-640-480-8.jpg" title="Title #1"/> </li>
<li> <img src="http://lorempixel.com/output/food-q-c-640-480-3.jpg" title="Title #2"/> </li>
</ul>
<a href="#" id="previous">previous</a> <a href="#" id="next">next</a>
JS:
function loadSlide(index){
$('#gallery li').hide()
.eq(index).show();
}
$('#gallery').data('index',0).find('li').hide();
loadSlide(0);
$('#next').on('click',function(e){
var index = $('#gallery').data('index'),
numSlides = $('#gallery li').length;
index = (index + 1) % numSlides;
loadSlide(index);
$('#gallery').data('index',index);
e.preventDefault();
});
$('#previous').on('click',function(e){
var index = $('#gallery').data('index'),
numSlides = $('#gallery li').length;
index = (index + numSlides - 1) % numSlides;
loadSlide(index);
$('#gallery').data('index',index);
e.preventDefault();
});
Это позволяет избежать многих обходов (например, фиаско .next()
)разделение ролей.
Смена слайда выполняется функцией, она принимает номер и показывает этот слайд.
Текущий номер слайда сохраняется наСаму галерею, используя .data()
Следующим и предыдущим кнопкам просто нужно получить текущий слайд и либо соответственно увеличить приращение на это число, затем вызвать сменщик слайдов.
Таким образом, вы можете легко расширить любую конкретную область.Хотите переход?Поместите это в устройство смены слайдов.Хотите слайды для автоматического продвижения?Установите таймер для вызова смены слайдов.
Единственное, что отличает это решение от полнофункционального слайдера, - это то, что обычно вы инкапсулируете все вместе и используете пользовательские события, а не функцию для изменения слайда.Я был бы рад расширить этот пример, чтобы показать разницу, если хотите.