Я создаю карусель изображений HTML5 с тремя изображениями. Переходы выполняются с помощью TweenMax и TimeLine. У меня два события щелчка, один для следующего изображения и один для предыдущего изображения, следующая функция изображения работает правильно и представляет собой бесконечный цикл, но предыдущая функция останавливается после того, как она проходит через изображения один раз. вот код.изображение карусель не будет бесконечно петля в обратном
HTML:
<div id="expanded-state">
<div id="expanded-exit"></div>
<div id="close-btn"></div>
<button id="arrow-prev"></button>
<button id="arrow-next"></button>
<div id="theater">
<div class="theater"></div>
<div class="theater"></div>
<div class="theater"></div>
</div>
<div id="cta"></div>
<div id="footer"></div>
</div>
</div>
CSS:
.theater {
width: 970px;
height: 345px;
position: absolute;
top: 0px;
left: 0px;
z-index: 1;
}
.theater:nth-child(1){
background: url(theater-01.jpg);
}
.theater:nth-child(2){
background: url(theater-02.jpg);
}
.theater:nth-child(3){
background: url(theater-03.jpg);
}
JS:
var $slides = $(".theater");
var currentSlide = 0;
function addListeners() {
arrowPrev.addEventListener('click', theaterScrollPrev);
arrowNext.addEventListener('click', theaterScrollNext);
}
function theaterScrollNext() {
tm.to($slides.eq(currentSlide), 0.5, {left:"-970px"});
if (currentSlide < $slides.length - 1) {
currentSlide++;
}
else {
currentSlide = 0;
}
tm.fromTo($slides.eq(currentSlide), 0.5, {left: "970px"}, {left:"0px"});
}
function theaterScrollPrev() {
tm.to($slides.eq(currentSlide), 0.5, {left:"970px"});
if (currentSlide < $slides.length - 1) {
currentSlide--;
}
else {
currentSlide = 0;
}
tm.fromTo($slides.eq(currentSlide), 0.5, {left: "-970px"}, {left:"0px"});
}
удлинение моего вопроса немного. jQuery настолько громоздкий, поэтому мне было интересно, есть ли способ ванильного js сделать эту же функцию. Мои js chops еще не очень хороши. Благодарю. –
Вы должны анимировать свойство 'x', а не свойство' left', чтобы вы могли анимировать на субпиксельном уровне. Смещения позиции CSS, такие как 'left', только анимированные на уровне пикселей. Анимация 'x' и' y' будет использовать аппаратное ускорение. Анимирование смещений позиции CSS, таких как 'left', приведет к созданию макета и не даст вам шелковистой гладкой анимации. http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/ –