Паводзяная навігацыя, падобная да ў дапытках, за дапамою API View Transitions у Next.js
Перэходы між сторункамі у стылі додатка ў Next.js за дапамогою View Transitions API: рух спільных элементаў між маршрутамі без вікорыстання важкай бібліятэкі анімацый, а таксама прыміткі ўспрымку.
Крыніцы: Next.js View Transitions API: Smooth App-Like Navigations
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 вызвалі такія эфекты на розных прыстроях і з разнымі швайнацтвамі сеткі.