Как зациклить слайдер
Есть 9 картинок, смена присходит по 3 картинки, ширина картинки 130;есть анимация css.
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="carousel">
<a href="#" class="arrow left-arrow" id="prev">‹ </a>
<div class="gallery">
<ul id="images">
<li><img src="1.png"></li>
<li><img src="2.png"></li>
<li><img src="3.png"></li>
<li><img src="4.png"></li>
<li><img src="5.png"></li>
<li><img src="6.png"></li>
<li><img src="7.png"></li>
<li><img src="8.png"></li>
<li><img src="9.png"></li>
</ul>
</div>
<a href="#" class="arrow right-arrow" id="next">› </a>
</div>
<script>
var ul = document.getElementById('images');
var position=0;
document.getElementById('prev').onclick = function() {
if(position>-130*6)
{
position=position - 130*3;
ul.style.marginLeft = position + 'px';
}
};
document.getElementById('next').onclick = function() {
if(position<-20)
{
position=position + 130*3;
ul.style.marginLeft = position + 'px';
}
};
</script>
</body>
</html>
|
Сделал анимацию через js, вроде работает;
только в конце в список из картинок пришлось вставить 3 картинки(такие же как 3 первые картинки)
function animate(opts) {
var start = new Date; // сохранить время начала
var timer = setInterval(function() {
// вычислить сколько времени прошло
var progress = (new Date - start) / opts.duration;
if (progress > 1) progress = 1;
// отрисовать анимацию
opts.step(progress);
if (progress == 1) clearInterval(timer); // конец :)
}, opts.delay || 10); // по умолчанию кадр каждые 10мс
}
function stretch(elem) {
animate({
duration: 500, // время на анимацию 500 мс
step: function(progress) {
elem.style.marginLeft =b -progress*390 +'px';
position=b- progress*390 ;
}
});
}
function stretch1(elem) {
animate({
duration: 500, // время на анимацию 500 мс
step: function(progress) {
elem.style.marginLeft =b +progress*390 +'px';
position=b+ progress*390 ;
}
});
}
и вот такой код действия получился
document.getElementById('prev').onclick = function() {
if(position<-130*7) {
position=0; ul.style.marginLeft =0 +'px';b=position; stretch(ul);}
b=position;
stretch(ul);
};
|
| Часовой пояс GMT +3, время: 12:34. |