Задать вопрос
@kingdomofcrooked
Дизайнер

Плавный переход между страницами сайта. Как реализовать?

Уже давно заметил что многие умельцы делают интересные анимации при переходе на новые страницы сайта. Многие креативные агенства например. Те же примеры с behance и dribbble. И это не просто плавное угасание и появление которое легко можно реализовать с java sc. Здесь все намного сложнее. Посмотрите пример (выберите любой проект и он очень плавно загрузится в новую страницу): redcollar.ru

На сколько все это сложно реализовать учитывая что сайт делается на wordpress? Подгрузка новой страницы в основной? Нужно ли использовать adobe animate для таких сложных анимаций?
  • Вопрос задан
  • 39592 просмотра
Подписаться 28 Средний Комментировать
Решения вопроса 2
webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...
https://s-sd.ru/files/ppcontent/index.html
https://s-sd.ru/blog_studio_design/plavnaya_smena_...
Делайте что хотите в качестве эффектов %)
По идее, это делается 10-15 строк jquery.
А логика у этого плагина простая, как 5 копеек.
1. Жмем на ссылку перейти по ссылке.
2. Страница откладывает переход, запоминая ссылку.
3. Сначала показывает эффект, потом скрывает всю страницу.
4. Потом уже переходит на другую страницу.
5. А на новой странице, просто идет плавная загрузка контента.
Ответ написан
mudrenokanton
@mudrenokanton
frontend dev
Сложно это все грамотно и красиво сделать. А сама технология несложная.
Загляните в dev-tools. Перезагрузки страницы не происходит, происходит несколько анимаций и смена контента. Смена контента происходит в блоке class = "content replacable". При смене контента, происходит вспышка и ре-рендер, и это заметно. Подгружается html для каждой страницы проекта заранее или асинхронно — не так важно, как через ajax можно подгрузить гуглится несложно. Для того, чтобы быстро вставить нужный нам html в блок, можно испольовать такую штуку.
Анимации сделаны(все или почти все) на css и запускаются сменой классов. Увидеть каждую из них очень просто если включить вкладку Animations в dev-tools:
aa5466d65b2744558101796d5affcfcf.png

upd: из либ они используют Swipe, skrollr, gsap и Three. Последняя похоже используется только для текстового эффекта на главной странице и занимает половину размера js билда =) В целом я бы не сказал, что они все клево сделали. 10 мб основной страницы сайта это перебор + видосики автоподгружаются с течением времени и кушают уже 65мб трафика. Мелкие картинки не в svg и не в спрайте, потому мы делаем около 50 запросов по ним. И т.п.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
bykardashov
@bykardashov
Web – программист
Есть одна крутая платформа GSAP, с помощью нее можно анимировать что угодно и не сложно это все. Вот пример реализации на русском. В кратком содержании. Далее применяется технология HTML5 History Api.
Ну а дальше дело рук, нужно просчитать действия анимации и по ее завершению заменять история браузера. Ну а страницу соответственно подгружать или сразу при загрузки всей страницы или перед началом анимации через ajax.
Ответ написан
Комментировать
@Skit25
на всё воля Бога
Плавный переход, это минимум ajax.
Подгружается не вся страница, а только контент.
Например у Jquery есть функции fadeIn и fadeOut, можно и другими реализовать.

Жмешь на ссылку, отправляется запрос на подгрузку контента следующей страницы, в этот момент происходит "затухание" текущей страницы, контент подгружен, стартует функция "появления". "Сбалансировать" время между запросом контента и его получением можно гифкой ajax-loader.

Если это сделать не асинхронным запросом, получится "каша", ведь первая страница может потухнуть, а вторая еще будет в ожидании, так и вторая может не сразу открыться.
Хотя это можно сделать. Просто к клику вешаешь событие "затухание". Браузер пока ответ не получит от сервера, страницу не сменит. А на ready ДОМа каждой страницы (или только переходов), повешать появление . Будет самый простой эффект плавного перехода между страницами. Клик - затухание, пока браузер ждет ответ на клик - переход на новую страницу - появление контента. Если сервер быстро обрабатывает запросы, сайт оптимизирован, а у пользователя шустрый интернет, будет выглядеть как по настоящему.
Ответ написан
Хороший пример от codyhouse с демкой и объяснением.
Как отметил Sergey Goryachev, дело тут только в js. В вашем случае wordpress не придает какой-либо специфики - всё делается на фронтенде.
Ответ написан
Комментировать
@McBernar
Вы удивитесь, но большинство того, что выглядит как магия — на самом деле читерство :)
Вот выше Сергей совершенно верно описал. Нет каких-то сложных взаимосвязей между экранами, а есть просто две части анимации — проиграть первую перед переходом, проиграть вторую после перехода.
Ответ написан
@I_Wizard
Есть библиотека, с помощью которой можно реализовать то, что вам нужно. Называется barba.js . на русском инструкций я не нашел, но есть статейка на английском ( ссылка) . Мне кажется что там все понятно. Анимацию можно подставить любую. в примере - просто fadeIn и fadeOut используется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы