SvelteKit でお手軽に View Transition API を導入する
- ほんとうに導入だけ
ほんとうに導入だけ
ページ遷移をふわっとさせてくれるすごい API を使ってみたかった。これはその導入時の作業記録。
大まかな流れ
やり方は Svelte のブログ記事がすべて教えてくれている: Unlocking view transitions in SvelteKit 1.24
1.5年前くらいの記事ではあるが、特に何かを変更する必要はなさそうだった。
簡略化した手順
+layout.svelte
に以下のコードを追加
import { onNavigate } from '$app/navigation';
onNavigate((navigation) => {
if (!document.startViewTransition) return;
return new Promise((resolve) => {
document.startViewTransition(async () => {
resolve();
await navigation.complete;
});
});
});
document.startViewTransition
がビュー遷移を実行してくれるメソッドで、それをページ遷移時に実行してほしいから onNavigate
の中に書いている、ということだと思う。たぶん。
CSS のいい感じの箇所に以下のコードを追加する
@media (prefers-reduced-motion) {
::view-transition-group(*),
::view-transition-old(*),
::view-transition-new(*) {
animation: none !important;
}
}
prefers-reduced-motion
は端末のアニメーションを減らす設定がされているかを判断するメディア特性。
有効化されている場合は遷移アニメーションもなしにしましょう、ということ。