Как написать функцию, которая будет уменьшать translateX объекта при уменьшении экрана?

Как написать функцию, которая работала бы вот так: при уменьшении ширины экрана слайды постепенно заезжали бы друг под друга и при этом стрелки пролистывания не заезжали на слайды и при при уменьшении ширины экрана до 400-500 пикселей отображался только один слайд со стрелками. Сами слайды я расположил вот таким образом и сделал это через плагин vue 3d carousel

.carousel-3d-slide.right-1  {
  transform: translateX(270px) translateZ(-180px) !important; 
}
.carousel-3d-slide.right-2 {
  transform: translateX(540px) translateZ(-430px) !important; 
}
.carousel-3d-slide.right-3 {
  transform: translateX(840px) translateZ(-780px) !important;
}
.carousel-3d-slide.left-1 {
  transform: translateX(-270px) translateZ(-180px) !important;
}
.carousel-3d-slide.left-2 {
   transform: translateX(-540px) translateZ(-430px) !important; 
}
.carousel-3d-slide.left-3 {
  transform: translateX(-840px) translateZ(-780px) !important;
}

Но писать translateX для каждого разрешения экрана муторно, вот я и прошу помочь найти решение путем написания функции.

Код jsfiddle.net/g6qfyd2p/

Сайт http://c96180og.beget.tech/

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Organizer

Сделай через относительные величины. И тогда никаких скриптов не надо)

.carousel-3d-slide.right-1  {
  transform: translateX(14vw) translateZ(-180px) !important; 
}
.carousel-3d-slide.right-2 {
  transform: translateX(28vw) translateZ(-430px) !important; 
}
.carousel-3d-slide.right-3 {
  transform: translateX(44vw) translateZ(-780px) !important;
}
.carousel-3d-slide.left-1 {
  transform: translateX(-14vw) translateZ(-180px) !important;
}
.carousel-3d-slide.left-2 {
   transform: translateX(-28vw) translateZ(-430px) !important; 
}
.carousel-3d-slide.left-3 {
  transform: translateX(-44vw) translateZ(-780px) !important;
}

А при 500 уже через @media меняй, или скриптом. Но там по идее уже другая структура будет. (хотя мб что-то на той-же сообразишь)

→ Ссылка