Как сделать CSS анимацию слайдер
Всем привет! Вопрос: Есть условный "слайдер" на сайте, все слайды в котором объединены в единый фрейм. Как с помощью CSS или JS сделать анимацию (чтобы по нажатию на кнопку NEXT к координатам фрейма со слайдами добавлялось значение, например (+100vw) и слайдер пролистывался дальше на это значение)?
Т.е. Учитывая текущее положение фрейма добавлять к нему значение перемещения в одну из сторон по нажатию кнопки NEXT (и отнималось это значение от текущего местоположение по нажатию кнопки PREV)
var button = document.querySelector(".button"),
wrapper = document.querySelector(".slider-wrapper").style;
button.onclick = function(){
wrapper.left = parseFloat(wrapper.left) + 1000 + "vw";
}
Пробовал такое для перемещения фрейма, не срабатывает(
Ответы (1 шт):
Автор решения: Миша
→ Ссылка
Вот так работает перемещение блока в зависимости от его текущего положения -
CSS
.sliderwrapper {
position: absolute;
/* В переменной --x мы будем держать
значение координаты по горизонтали;
в переменной --y — по вертикали. */
--x: 0vw;
--y: 0vh;
/* Укажем transform, значением которого
передадим translate с указанными переменными.
В итоге нам не придётся менять сам transform,
мы сможем ограничиться лишь
изменением значений
переменных --x и --y. */
transition: transform .2s ease-in-out;
transform: translate(var(--x), var(--y));
}
JS
document.querySelector("#button").onclick = function(){
const style = window.getComputedStyle(sliderwrapper)
// Считываем значение каждой переменной через getPropertyValue:
const translateX = parseInt(style.getPropertyValue('--x'))
const translateY = parseInt(style.getPropertyValue('--y'))
// Меняем текущее положение на необходимое значение
startX = translateX - 100
startY = translateY
sliderwrapper.style.setProperty("--x", `${startX}vw`)
sliderwrapper.style.setProperty("--y", `${startY}vh`)
}