/* Скрываем скроллбар в WebKit */ #slider-track::-webkit-scrollbar { display: none; } Листайте ⬅️ ➡️ или дождитесь автопрокрутки (function () { const slider = document.getElementById('slider'); const viewport = document.getElementById('slider-viewport'); const track = document.getElementById('slider-track'); const slides = Array.from(track.children); let index = 0; let timerId = null; const interval = 3500; // мс между сменами function slideTo(i) { const w = viewport.clientWidth; track.scrollTo({ left: i * w, behavior: 'smooth' }); } function next() { index = (index + 1) % slides.length; slideTo(index); } function start() { stop(); timerId = setInterval(next, interval); } function stop() { if (timerId) clearInterval(timerId); timerId = null; } // Пауза при наведении/фокусе/касании slider.addEventListener('mouseenter', stop); slider.addEventListener('mouseleave', start); slider.addEventListener('touchstart', stop, { passive: true }); slider.addEventListener('touchend', start); slider.addEventListener('focusin', stop); slider.addEventListener('focusout', start); // Синхронизация индекса после ручного скролла let t; track.addEventListener('scroll', function () { stop(); if (t) clearTimeout(t); t = setTimeout(function () { const w = viewport.clientWidth; index = Math.round(track.scrollLeft / w); start(); }, 150); }, { passive: true }); // Корректно держим кадр после ресайза window.addEventListener('resize', () => slideTo(index)); // Стартуем start(); })();