Галоўная / Артыкулы / Паводзяная навігацыя, падобная да ў дапытках, за дапамою API View Transitions у Next.js

Паводзяная навігацыя, падобная да ў дапытках, за дапамою API View Transitions у Next.js

Ўзайце API View Transitions разам з навігацыяй у Next.js для анімэйшання спакульнаўых элементаў без аднойчыных бібліятэкаў анімазій.

805 слоў

API View Transitions дазваляе прыгуначам анімаваць пераходы между станамі DOM без неабяжлівай наработкі спецыяльных анімацый. У проектах Next.js App Router ён практычна сумешчаецца з навігацыяй на боку кліента, калі трэба падтрымка працы спяльных элементаў заместо рэзкіх пераходаў.

Што это

Эта функцыя прыгунача, якая фіксуе стары і новы станы та анімавае пераходы между ямі. Вы самі выбіраеце, калі ўвядзаць яе у працу, называеце спяльныя элементы та, за патрэбой, налаштовваеце ў CSS.

function navigateWithTransition(callback: () => void) {
  if (!document.startViewTransition) {
    callback();
    return;
  }

  document.startViewTransition(() => {
    callback();
  });
}

Чаму Next.js падходзіць

Пераходы между маршрутамі на боку кліента вже заменяюць большыя дрэвы відображэння. View Transitions даюць гледкую анімацыю пераходаў, яку корыстувальнікі асоціююць з натыўнымі дапрыемамі.

Падтрымка прыгуначаў і паліфілы

Падтрымка павольна паўрабляецца, але ёнша не ўсюды. Выберыце, чы хочаце працаваць з поступовым пасіленьнем функцый чы викорыстоўваць паліфілы; паліфілы збільшуюць вагу дапрыема і паскладжваюць точнасць анімацый.

"use client";

import { useRouter } from "next/navigation";
export function TransitionLink() {
  const router = useRouter();
  function navigate() {
    if (!document.startViewTransition) {
      router.push("/dashboard");
      return;
    }
    document.startViewTransition(() => {
      router.push("/dashboard");
    });
  }
  return (
    <button onClick={navigate}>
      Dashboard
    </button>
  );
}

Шаблоны інтэграціі

Увёлікце пераходы пад навігацыю, пазначайце спяльваныя элементы стабільнымі іменамі, а таксама запобегайце рывкам у лейяутах за дапамою зарезерваванага прастору.

.product-image {
  view-transition-name: product-image;
}

Налаштаванне руху

Псевдаселектары view-transition у CSS дазваляюць налагодзіць трываласць і характер змены. Вядзіце прыоритет спакойнаму руху; дзяржацкія анімазіі здаюцца медленнейшымі, чым яны ёсць.

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 350ms;
}

::view-transition-old(root) {
  animation: fade-out 350ms ease;
}
::view-transition-new(root) {
  animation: fade-in 350ms ease;
}

Прынтаныя проблэмы, стрімаванне, выконвальная спроможнасць

Утрымайцеся ад анімавання элементаў, якія стрімаюцца пазней або сильна зменяюць размер. Тэставайце медленныя сеті. Вядзіце прыоритет атрыбутаў, якія лёгкая ператвараюцца. Якщо стрімаванне надае несувязаныя кадры, адкладзіце пераход чыста да статычнага відображэння.

Існавайце эфекты перахода, калі важліва неперывна навігацыя і браузеры вашых аудыэнтак падтрымліяць іх. Адказайце ад их, калі ўжоўкласна інфармацыя зміняецца быстрей, чым анімацыя можа гэта дапамогчы. Зберагайце прылады ў стане «зеленага», мерайце кожны этап окрема і адмовляйцеся ад выпуску на адчуваннях лячна, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб абярэння пад новым назвам. Зберагайце прылады ў стане «зеленага», мерайце кожны этап окрема і адмовляйцеся ад выпуску на адчуваннях лячна, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб абярэння пад новым назвам. Зберагайце прылады ў стане «зеленага», мерайце кожны этап окрема і адмовляйцеся ад выпуску на адчуваннях лячна, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб абярэння пад новым назвам. Зберагайце прылады ў стане «зеленага», мерайце кожны этап окрема і адмовляйцеся ад выпуску на адчуваннях лячна, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб абярэння пад новым назвам. Зберагайце прылады ў стане «зеленага», мерайце кожны этап окрема

Зберагаюце прыстроі ў стане «зеленага», вы меряеце кожны этап окрема і адмовляецеся апускать продукт, спакоюяся на інтуіцыі, калі наступная версія можа зноў запрацаваць за аднаковым принцыпам безвыяўленага браку пад новым назвам.У наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам. Зберагаюце канфігурацыі ў стане «зеленага», меркуце кожны этап окалічна і адмовляйцеся апускваты продукт толькі на падставе інтуўіцыі, калі ў наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам. Зберагаюце канфігурацыі ў стане «зеленага», меркуце кожны этап окалічна і адмовляйцеся апускваты продукт толькі на падставе інтуўіцыі, калі ў наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам. Зберагаюце канфігурацыі ў стане «зеленага», меркуце кожны этап окалічна і адмовляйцеся апускваты продукт толькі на падставе інтуўіцыі, калі ў наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам. Зберагаюце канфігурацыі ў стане «зеленага», меркуце кожны этап окалічна і адмовляйцеся апускваты продукт толькі на падставе інтуўіцыі, калі ў наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам. Зберагаюце канфігурацыі ў стане «зеленага», меркуце кожны этап окалічна і адмовляйцеся апускваты продукт толькі на падставе інтуўіцыі, калі ў наступнай версіі можна знова запрацавіць той самы нявідчуваны спосаб працы з бягамі пад новым назвам.Ці розклады зменшэння разметкі можна запобiec за дапамою практычных тэхнік CSS і структуравання, якія не дазволяюць відэа-фонам у Next.js вызвалі такія эфекты на розных прыстроях і з разнымі швайнацтвамі сеті.
  • Запобежчанне кумулятивнаму зменшэнню разметкі за дапамою відэа-фонав у Next.js — Дакладна інформацыя пра методы CSS і структуравання, якія дапамагаюць утримаць стабільную разметку нават пад вплыв відэа-фонав у проектах на Next.js.