Как реализовать бесконечную вертикальную анимацию двух блоков на js css html

Сейчас есть вот такой результат , как сделать так чтобы это было все беспрерывно? Нужно чтобы картинки двигались в разных направлениях

const imagesOne = [
    'assets/img/main-1.jpg',
    'assets/img/main-2.jpg',
    'assets/img/main-3.jpg'
];

const imagesTwo = [
    'assets/img/main-4.jpg',
    'assets/img/main-5.jpg',
    'assets/img/main-6.jpg'
];

const boxOne = document.querySelector('.ag_main-right_one');
const boxTwo = document.querySelector('.ag_main-right_two');

imagesOne.forEach(src => {
    const img = document.createElement('img');
    img.className = 'ag_main-right_img';
    img.src = src;
    img.alt = 'main';
    boxOne.appendChild(img);
});

imagesTwo.forEach(src => {
    const img = document.createElement('img');
    img.className = 'ag_main-right_img';
    img.src = src;
    img.alt = 'main';
    boxTwo.appendChild(img);
});
.ag_main-right {
    height: 700px;
    overflow: hidden;
    position: relative;
    width: 100%;
    max-width: 574px;
}

.ag_main-right_box {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
    gap: 25px;
    position: absolute;
    -webkit-transition: -webkit-transform 0.5s ease;
    transition: -webkit-transform 0.5s ease;
    -o-transition: transform 0.5s ease;
    transition: transform 0.5s ease;
    transition: transform 0.5s ease, -webkit-transform 0.5s ease;
 /* Добавляем плавность перехода */
}

.ag_main-right_img {
    max-width: 277px;
    width: 100%;
    border-radius: 30px;
    -o-object-fit: cover;
    object-fit: cover;
}

.ag_main-right_one {
    left: 0;
    -webkit-animation: scrollDown 10s linear infinite;
    animation: scrollDown 10s linear infinite;
    top: 0;
}

.ag_main-right_two {
    right: 0;
    top: 0;
    -webkit-animation: scrollUp 10s linear infinite;
    animation: scrollUp 10s linear infinite;
}

@-webkit-keyframes scrollDown {
    0% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
    }

    100% {
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
    }
}

@keyframes scrollUp {
    0% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
    }

    100% {
        -webkit-transform: translateY(100%);
        transform: translateY(100%);
    }
}
                    <div class="ag_main-right">
                        <div class="ag_main-right_box ag_main-right_one">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                        </div>
                        <div class="ag_main-right_box ag_main-right_two">
                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                                                        <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                                                                                    <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                                                                                                                <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                                                                                                                                            <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                                                                                                                                                                        <img class="ag_main-right_img" src="https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg" alt="main">
                        </div>
                    </div>


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

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

Чтобы прокрутка шла непрерывно, нужно соблюсти следующие условия:

  • Набор изображений необходимо продублировать, добавив копии после оригиналов в том же порядке;
  • Суммарная высота (или ширина для горизонтального типа) основного набора должна быть больше высоты (ширины) прокручиваемого контейнера;
  • Прокручивать блок на 50% (не на 100!).

Также сто́ит вынести процесс заполнения в отдельную функцию, дабы не дублировать код для разных блоков:

const imagesOne = ['https://i.stack.imgur.com/MraLT.jpg', 'https://i.stack.imgur.com/VxVNC.jpg', 'https://i.stack.imgur.com/A9VLC.jpg', 'https://i.stack.imgur.com/oYG0R.jpg'];
const imagesTwo = ['https://cache3.youla.io/files/images/780_780/5b/58/5b5827cf22a449378552f293.jpg', 'https://i.imgur.com/pCm96IG.png'];

const boxOne = document.querySelector('.ag_main-right_one');
const boxTwo = document.querySelector('.ag_main-right_two');

function fAddImages(arrImgSrc, targetBox) {
  let imgTags = '';
  arrImgSrc.forEach(src => { imgTags += `<img class="ag_main-right_img" src="${src}" alt="main">` });
  targetBox.insertAdjacentHTML('beforeend', imgTags.repeat(2));
}

fAddImages(imagesOne, boxOne);
fAddImages(imagesTwo, boxTwo);
.ag_main-right {
  position: relative;
  height: 700px; width: 100%;
  max-width: 574px;
  overflow: hidden;
}

.ag_main-right_box {
  position: absolute;
  display: flex;
  flex-direction: column;
  gap: 25px;
}

.ag_main-right_img {
  width: 100%;
  max-width: 277px;
  border-radius: 30px;
  object-fit: cover;
}

.ag_main-right_one {
  top: 0; left: 0;
  animation: scrollDown 5s linear infinite;
}
.ag_main-right_two {
  top: 0; right: 0;
  animation: scrollDown 5s linear infinite reverse;
}

@keyframes scrollDown { to { transform: translateY(-50%); }}
<div class="ag_main-right">
  <div class="ag_main-right_box ag_main-right_one"></div>
  <div class="ag_main-right_box ag_main-right_two"></div>
</div>

Ещё по теме бесконечных "бегушек": раз и два.

→ Ссылка