コンテンツへスキップ
切り替える +JavaScript少し 新顔

ページ内をなめらかに切り替える

View Transitions

一覧から詳細へ、同じ要素がつながったまま動く。切り替えの「間」をブラウザが作ってくれる。

AIへの頼み方

一覧のサムネイルを押したら、その画像がそのまま詳細ページの大きな画像に繋がって動くようにしてください。View Transitions API を使い、繋ぎたい要素に同じ view-transition-name を付けてください。未対応ブラウザでは即座に切り替わるフォールバックも入れてください。

動くデモ

この項目のデモは自動では動きません。操作して確かめてください。

全画面で見る ↗

最小コード

HTML
<!-- 一覧と詳細で、繋ぎたい要素に同じ名前をつける -->
<img class="thumb" style="view-transition-name: pic-a" src="...">

<script>
  // 未対応ブラウザでも壊れないように包む
  function transition(update) {
    if (document.startViewTransition) document.startViewTransition(update);
    else update();                       // 一瞬で切り替わるだけ
  }

  // 画面を書き換える処理を、そのまま渡す
  transition(() => {
    listView.hidden = true;
    detailView.hidden = false;
    detailImage.style.viewTransitionName = 'pic-a';  // 同じ名前で繋がる
  });
</script>

<style>
  /* 動きの本体はブラウザが作る。CSS では速さと曲線だけ調整する */
  ::view-transition-group(pic-a) {
    animation-duration: .42s;
    animation-timing-function: cubic-bezier(.22, .9, .3, 1);
  }

  @media (prefers-reduced-motion: reduce) {
    ::view-transition-group(*) { animation-duration: 1ms !important }
  }
</style>

対応状況

新顔 2026年08月時点で確認

Baseline newly available(2025-10-14・Firefox 144 で全エンジン対応)。未対応環境では一瞬で切り替わるだけで壊れない。

未対応でも即座に切り替わるだけなので、実案件で使える。

対応状況は自動更新していません。確認日より後の変化はこのページに反映されていない場合があります。

使いどころ/避けどころ

一覧から詳細へ移るときに向く。写真つきのカードをタップして拡大表示にする、商品一覧から商品ページへ進む、といった同じものを別の見え方で見せる場面で効く。切り替えの前後で「これは同じものだ」と伝わるので、迷子になりにくい。

いちばんの値打ちは、動きを自分で書かなくていいこと。繋ぎたい要素に同じ名前を付けるだけで、位置とサイズの差をブラウザが埋めてくれる。CSS で書くのは速さと曲線の調整だけになる。

避けたいのは3つ。

関係のないもの同士を繋ぐこと。見た目が動くぶん、繋がりのないページ間で使うと「何が起きたのか」がかえって分からなくなる。

同じ名前を同時に2か所へ付けること。画面上に同じ名前の要素が2つあると動きが止まる。開いたら元の要素から名前を外す、という後始末が要る。

長くすること。0.3秒から0.5秒に収める。切り替えは移動の手段であって、見せ場ではない。

動きを減らす設定の人には、時間をほぼゼロにして即座に切り替える。この機能は「無効にする」よりも「速くする」ほうが素直に書ける。

関連項目

← 実装辞典の一覧へ