Как реализовать скроллинг вверх без остановки?

Как реализовать переход на предыдущие страницы каталога, когда используется бесконечная прокрутка (infinity-scroll) на сайте, если пользователь скопировал ссылку с номером страницы? Возможно ли прокрутить обратно к началу при открытии страницы по прямой ссылке, например, открыв ссылку типа .../catalog/page3? Имеется хороший плагин для бесконечной прокрутки, но он не поддерживает эту функциональность.
  • 26 июня 2024 г. 6:51
Ответы на вопрос 2
Для реализации скроллинга вверх без остановки можно использовать JavaScript. Вот пример кода, который будет прокручивать страницу вверх без остановки:

```javascript
var scrollSpeed = 2;

function scrollUp() {
    window.scrollBy(0, -scrollSpeed);
    requestAnimationFrame(scrollUp);
}

scrollUp();
```

Чтобы реализовать переход на предыдущие страницы каталога при использовании бесконечной прокрутки, необходимо получить номер страницы из URL и установить соответствующий скролл. Вот пример кода, который можно использовать для этой цели:

```javascript
var url = window.location.href;
var page = url.split('page')[1];

if (page) {
    var scrollTo = document.getElementById('page' + page);
    scrollTo.scrollIntoView(true);
}
```

Этот код будет искать номер страницы в URL и прокручивать к соответствующему элементу на странице.

Эти примеры можно доработать и адаптировать под ваши нужды и особенности сайта.
Недавно искал и тоже не нашел готовый плагин, пришлось писать самому. Код сейчас недоступен, алгоритм следующий: 
1. Размещаем сверху списка элемент
2. Создаём IntersectionObserver с этим элементом
3. Когда срабатывает callback на появление элемента в зоне видимости запоминаем положение скролла относительно низа страницы и запускаем загрузку данных, а по окончании загрузки рендерим данные на страницу и ставим скролл на значение, которое запоминали ранее.

Ну ещё лоадер можно отрисовать, когда идёт загрузка данных и выставлять флаг, чтобы при повторном появлении не запускалась ещё одна загрузка данных и т.д. по вкусу
Похожие вопросы