У меня есть карусель HTML / CSS / JS со следующей разметкой c:
<div class="carousel">
<ul>
<li><img src="img1.png"></li>
<li><img src="img2.png"></li>
<li><img src="img3.png"></li>
<li><img src="img1.png"></li>
</ul>
</div>
и следующей базой c CSS:
.carousel {
overflow: hidden;
white-space: nowrap;
ul {
left: 0;
position: relative;
transition: left 1s;
li {
display: inline-block;
img {
width: 100%;
}
}
}
}
Я настроил JS так, чтобы каждые 3 секунды я изменял свойство left
тега ul
, добавляя к нему отрицательное количество пикселей, равное ширине карусели, чтобы он создавал Эффект перехода карусели от скольжения одного изображения к другому.
Проблема, с которой я столкнулся, связана с тем, что происходит, когда карусель достигает конца. Я добавил в конец вторую копию img1.png
, и когда она туда доберется, я хочу установить смещение left
обратно на 0
, чтобы оно началось снова и l oop навсегда.
Проблема, в частности, заключается в том, что когда свойство left
имеет значение, например, -1000px
, а я изменяю его на 0
, карусель внезапно анимируется вплоть до первого изображения. Я хочу установить для свойства left
значение 0
без анимации перехода.
Я подумал, что если временно установить для свойства transition
значение none
, то установить left
на 0
, а затем установите transition
обратно на left 1s
, тогда это будет работать, но это не так. Он по-прежнему анимируется с конца до самого начала, когда я устанавливаю left
в 0
.
Как добиться желаемого эффекта с помощью переходов CSS и свойства left
, или подход, который я использую, в корне неверен и нуждается в переосмыслении? Спасибо.