Как сделать чтоб блоки сменяли бесконечно друг друга через 3с?
Подскажите пожалуйста, есть массив объектов, есть функция, создающая блок, нужно сделать бесконечную смену блоков через 3с., у меня они появляются все вместе.
const arrObj = [ { img: 'img/avatar-1.png', textUser: 'Здравствуйте!', textAdmin: 'Привет!', }, { img: 'img/avatar-2.png', textUser: 'Как дела?', textAdmin: 'Норм', }, ]; function getChat(arr) { const block = document.createElement('div'); const user = document.createElement('div'); const userImg = document.createElement('img'); userImg.src = arr.img; const userText = document.createElement('p'); userText.textContent = arr.textUser; const admin = document.createElement('div'); const adminImg = document.createElement('img'); adminImg.src = 'img/logo.svg'; const adminText = document.createElement('p'); adminText.textContent = arr.textAdmin; admin.append(adminImg, adminText); user.append(userImg, userText); block.append(user, admin); } setInterval(() => { for (let i = 0; i < arrObj.length; i++) { getBlock(arrObj[i]); } }, 3000) |
const arrObj = [ { img: 'img/avatar-1.png', textUser: 'Здравствуйте!', textAdmin: 'Привет!', }, { img: 'img/avatar-2.png', textUser: 'Как дела?', textAdmin: 'Норм', }, ]; function getChat(arr) { const block = document.createElement('div'); const user = document.createElement('div'); const userImg = document.createElement('img'); userImg.src = arr.img; const userText = document.createElement('p'); userText.textContent = arr.textUser; const admin = document.createElement('div'); const adminImg = document.createElement('img'); adminImg.src = 'img/logo.svg'; const adminText = document.createElement('p'); adminText.textContent = arr.textAdmin; admin.append(adminImg, adminText); user.append(userImg, userText); block.append(user, admin); } setInterval(() => { for (let i = 0; i < arrObj.length; i++) { getBlock(arrObj[i]); } }, 3000)
Дополнительно:
Ответы:
Давайте своим блокам уникальные id и проверяйте какой сейчас существует. Если существует #user, то заменяем его на #admin и наоборот. Ну и с контейнером для блоков та же история. Если он существует, то очищаем его перед добавлением блока.
- В функции при смене блока меняется объекты в массиве
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы сделать блоки сменялись бесконечно друг друга через каждые 3 секунды, вам следует использовать JavaScript в сочетании с CSS.
Сначала создайте структуру HTML, в которой будут размещены ваши блоки:
<div id="slider"> <div class="slide">Содержимое блока 1</div> <div class="slide">Содержимое блока 2</div> <div class="slide">Содержимое блока 3</div> </div>
Далее добавьте стили CSS для блоков и анимации:
#slider { display: flex; overflow: hidden; } .slide { width: 100%; flex-shrink: 0; display: none; } .active { display: block; animation: slide 3s infinite; } @keyframes slide { 0% { opacity: 0; } 25% { opacity: 1; } 75% { opacity: 1; } 100% { opacity: 0; } }
Теперь добавьте JavaScript код, который будет управлять сменой блоков:
const slides = document.querySelectorAll('.slide'); let currentSlide = 0; function showSlide() { slides.forEach((slide) => { slide.classList.remove('active'); }); slides[currentSlide].classList.add('active'); currentSlide = (currentSlide + 1) % slides.length; } showSlide(); setInterval(showSlide, 3000);
Теперь ваш блоки будут сменяться друг друга через каждые 3 секунды. Помните, что вы можете настроить стили и анимации под ваш дизайн и потребности.