Как сделать переход между страницами?
Здравствуйте! Подскажите пожалуйста как сделать переход между страницами, бесшовный
При прокрутке страницы до конца, менялся url и плавно появлялась следующая страница
На примере этого сайта
https://ind.studio/
Дополнительно:
пример очень плохой. сильно тормозит и не очень юзабельный.
Ответы:
Это явно шаблон с JS, посмотрите библиотеку velocity-js
В сети возможно, есть уже подобные шаблоны
Самому написать - аяксом.
Или использовать готовые плагины.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Эффект “докрутил до конца страницы, URL поменялся, плавно появилась следующая страница” обычно делается через бесконечную прокрутку + History API. Это не просто переход между страницами, а AJAX/PJAX-навигация, где контент следующей страницы подгружается без полной перезагрузки.
Технически схема такая:
history.pushState();Простейшая идея:
const marker = document.querySelector('.js-next-page-marker'); const observer = new IntersectionObserver(async (entries) => { if (!entries[0].isIntersecting) return; const nextUrl = marker.dataset.nextUrl; const response = await fetch(nextUrl); const html = await response.text(); const doc = new DOMParser().parseFromString(html, 'text/html'); const nextContent = doc.querySelector('.site-main'); document.querySelector('.site-main').append(nextContent); history.pushState({}, '', nextUrl); }); observer.observe(marker);const marker = document.querySelector('.js-next-page-marker'); const observer = new IntersectionObserver(async (entries) => { if (!entries[0].isIntersecting) return; const nextUrl = marker.dataset.nextUrl; const response = await fetch(nextUrl); const html = await response.text(); const doc = new DOMParser().parseFromString(html, 'text/html'); const nextContent = doc.querySelector('.site-main'); document.querySelector('.site-main').append(nextContent); history.pushState({}, '', nextUrl); }); observer.observe(marker);
Но в реальном проекте этот код нужно сильно доработать: защита от повторной загрузки, корректная пагинация, canonical, analytics pageview, lazy load, формы, комментарии, SEO и доступность.
С точки зрения UX такой эффект часто хуже обычной пагинации. Пользователь теряет контроль, назад в браузере может работать странно, страница становится тяжёлой, а SEO требует аккуратной настройки отдельных URL.
Итог: это делается через AJAX + History API, но ставить такой механизм стоит только если он действительно нужен. Для большинства WordPress-сайтов лучше нормальная пагинация или аккуратный Load More.