function randomScroll() {
// Устанавливаем время работы от 10 до 25 секунд
const scrollDuration = Math.floor(Math.random() * 15000) + 10000; // 10000 - 25000 мс
const startTime = performance.now();
const originalScrollY = window.scrollY; // Исходная позиция скролла
// Параметры для скроллинга вниз
const scrollDistance = Math.floor(Math.random() * (3500 - 1500 + 1)) + 1500; // От 1500 до 3500 пикселей
const pauseCount = Math.floor(Math.random() * 10) + 5; // От 1 до 3 пауз
const pauseIntervals = [];
// Генерация случайных пауз
for (let i = 0; i < pauseCount; i++) {
pauseIntervals.push(Math.floor(Math.random() * (400 - 100 + 1)) + 100); // От 100 до 900 мс
}
let currentScrollY = 0; // Текущая позиция скролла
let pauseIndex = 0; // Индекс для пауз
const scrollDown = () => {
// Если еще не достигли целевой позиции и время скролла не истекло
if (currentScrollY < scrollDistance && (performance.now() - startTime) < scrollDuration) {
const step = Math.min(20, scrollDistance - currentScrollY); // Минимальный шаг скролла
window.scrollBy(0, step);
currentScrollY += step;
// Пауза между скроллингом
if (pauseIndex < pauseCount) {
const pauseDuration = pauseIntervals[pauseIndex];
pauseIndex++;
setTimeout(scrollDown, pauseDuration);
} else {
requestAnimationFrame(scrollDown);
}
} else {
// Когда скроллинг вниз завершен, начинаем скроллинг вверх
scrollUp();
}
};
const scrollUp = () => {
// Возвращаемся обратно к исходной позиции
if (window.scrollY > originalScrollY) {
const step = Math.min(20, window.scrollY - originalScrollY); // Минимальный шаг скролла вверх
window.scrollBy(0, -step);
requestAnimationFrame(scrollUp);
}
};
scrollDown(); // Начинаем скроллинг вниз
}
// Запускаем функцию
randomScroll();