リンクを押して次のページへ移るとき、画面が一瞬白くなって「パッ」と切りかわる。ふだん当たり前に見ているこの切りかえを、前のページが消えながら次のページが出てくる「ふわっ」とした動きにできるのが、CSSの View Transitions(ビュー・トランジション=画面の切りかえ)です。両方のページのCSSに数行足すだけで、JSはいりません。
使いどころは、同じサイトの中で、一覧から詳細へ移るときなど「つながり」を見せたい場面です。対応していないブラウザでは、今までどおりパッと切りかわるだけなので、足しても困る人は出ません。ただし動きは短く、動きを減らす設定の人には出さない、をセットにします。
この記事の要点
@view-transition { navigation: auto; }を両方のページに書くと、同じサイトの中のページ移動が「ふわっ」と切りかわる- 使いどころは、一覧から詳細へなど、前と後のページのつながりを見せたいとき。
view-transition-nameで写真をつなげて動かせる - ページ間の切りかえは、2026年11月時点でFirefoxが未対応(対応しないブラウザではふつうに切りかわる)。動きは0.3〜0.4秒ほどに短くし、動きを減らす設定では止める
完成見本:ページの切りかえ方4種類
どの見本も、小さな画面の中で「施工事例の一覧ページ」から「詳細ページ」へ移り、また一覧へ戻る動きを自動でくり返しています。1は、左が何も書かないとき、右がView Transitionsを書いたときです。
※ View Transitions は本来ブラウザの画面全体の切りかえに効きます。1ページの中で4つを同時に動かすことはできないので、見本では、その見え方を小さな画面の中で再現しています。本物の動きは、下の「応用」のボタンで試せます。見本は読み上げソフトでは読まれないようにしています。動きを減らす設定にしている方には、止まって見えます。
コピペ用のコード
CSSは、サイトのCSSファイルや、WordPressならテーマの「追加CSS」などに入れます。ページとページのあいだの切りかえなので、移る前のページと、移った後のページの両方にこのCSSが読み込まれている必要があります。WordPressの「追加CSS」はサイトの全ページに読み込まれるので、1か所に書けば足ります。
1. ページをふわっと切りかえる
切りかえる前と後の両方のページのCSSに @view-transition を書くと、同じサイトの中でページを移るとき、前のページが消えながら次のページが出てくる「ふわっ」とした切りかえになります。JSはいりません。左が書かないとき、右が書いたときです。
<!-- いつもどおりの、同じサイトのページへのリンク -->
<a href="works.html">施工事例を見る</a>/* 切りかえる前と後、両方のページのCSSに書く */
@view-transition {
navigation: auto;
}2. 横にすべるように切りかえる
切りかえの動きは、::view-transition-old(root)(前のページの写し)と ::view-transition-new(root)(次のページの写し)に、ふつうのCSSアニメーションを当てて変えられます。ここでは前のページを左へ、次のページを右から出しています。
<!-- いつもどおりの、同じサイトのページへのリンク -->
<a href="works.html">施工事例を見る</a>@view-transition {
navigation: auto;
}
/* 前のページは左へ、次のページは右から */
::view-transition-old(root) {
animation: 0.4s ease both kd-vt-out;
}
::view-transition-new(root) {
animation: 0.4s ease both kd-vt-in;
}
@keyframes kd-vt-out {
to { opacity: 0; transform: translateX(-30%); }
}
@keyframes kd-vt-in {
from { opacity: 0; transform: translateX(30%); }
}3. 一覧の写真が、詳細の大きな写真へつながる
一覧のページの小さな写真と、詳細のページの大きな写真に、view-transition-name で同じ名前をつけます。するとブラウザが2つを同じものとみなし、小さな写真が大きな写真の位置と大きさまで動いてつながります。
<!-- 一覧のページ -->
<a href="work-01.html">
<img class="kd-vt-thumb" src="photo-sea.jpg" alt="海のそばの家">
</a>
<!-- 詳細のページ -->
<img class="kd-vt-hero" src="photo-sea.jpg" alt="海のそばの家">@view-transition {
navigation: auto;
}
/* 2つのページで同じ名前をつけると、写真がつながって動く */
.kd-vt-thumb,
.kd-vt-hero {
view-transition-name: work-01;
}4. 動きを減らす設定では、動きをなくす
端末で「動きを減らす」設定をオンにしている人には、切りかえの動きをなくします。::view-transition-group(*) などの * は「名前をつけたものも含めて全部」という意味です。左が動きを減らす設定のとき、右がふだんのときです。
<!-- いつもどおりの、同じサイトのページへのリンク -->
<a href="works.html">施工事例を見る</a>@view-transition {
navigation: auto;
}
/* 動きを減らす設定の人には、切りかえの動きをなくす */
@media (prefers-reduced-motion: reduce) {
::view-transition-group(*),
::view-transition-old(*),
::view-transition-new(*) {
animation: none !important;
}
}サイトで使うときは、1(または2・3)と、4の動きを減らす設定の指定を、いっしょに書いておくのがおすすめです。
応用:同じページの中で、本物の切りかえを試す
View Transitions は、同じページの中の表示の切りかえにも使えます。こちらは少しだけJSを使い、document.startViewTransition() の中で表示を変えると、変わる前と後のあいだをブラウザがなめらかにつないでくれます。下のボタンを押すと、写真が小さい形と大きい形のあいだで動きます。
海のそばの家
<div class="kd-vt-card">
<img class="kd-vt-photo" src="photo-sea.jpg" alt="海のそばの家">
<p class="kd-vt-cap">海のそばの家</p>
</div>
<button type="button" class="kd-vt-btn">大きく見る</button>.kd-vt-card {
display: flex;
align-items: center;
gap: 12px;
}
.kd-vt-photo {
view-transition-name: kd-vt-photo; /* 動かす写真に名前 */
width: 40%;
aspect-ratio: 3 / 2;
object-fit: cover;
border-radius: 8px;
}
.kd-vt-card.is-big {
flex-direction: column;
align-items: stretch;
}
.kd-vt-card.is-big .kd-vt-photo {
width: 100%;
}
.kd-vt-btn {
margin-top: 12px;
padding: 10px 20px;
border: 0;
border-radius: 999px;
background: #0284C7;
color: #fff;
font-weight: 700;
cursor: pointer;
}const card = document.querySelector('.kd-vt-card');
const btn = document.querySelector('.kd-vt-btn');
btn.addEventListener('click', () => {
const change = () => {
const big = card.classList.toggle('is-big');
btn.textContent = big ? '小さく戻す' : '大きく見る';
};
// 対応していないブラウザでは、動きなしで切りかえる
if (!document.startViewTransition) { change(); return; }
document.startViewTransition(change);
});対応していないブラウザでは、if (!document.startViewTransition) の行で、動きなしでそのまま切りかえます。
仕組み:ブラウザが「写真」を撮って入れかえている
前と後の「写し」を重ねて動かす
View Transitions を使うと、ブラウザは切りかわる前の画面を写真のように写しておき、次のページが用意できたら、その写しと新しい画面を重ねて動かします。MDNによると、何も指定しなければ、前の写しは不透明から透明へ、次の写しは透明から不透明へ動き、「クロスフェード」(ふたつが溶けあうように入れかわる動き)になります。1の見本の「ふわっ」はこれです。
動きを変えるのは、写しにつけるCSSアニメーション
2の見本で使った ::view-transition-old(root) は「前のページ全体の写し」、::view-transition-new(root) は「次のページ全体の写し」を指します。:: から始まるのは、HTMLには書かれていないけれどCSSから選べる部分(疑似要素)の書き方です。ここに、ふだんどおり @keyframes で作ったアニメーションを当てると、すべる・縮むなど好きな動きにできます。2のコードは、戻るときも同じ向き(左へ)に動きます。
同じ名前の要素は、1つのものとしてつながる
3の見本の view-transition-name は、要素に「名前」をつける指定です。前のページと次のページで同じ名前の要素があると、ブラウザはそれを同じものとみなし、位置と大きさをなめらかにつなぎます。MDNによると、この名前は表示中の要素ごとに重ならないようにする必要があり、1ページに同じ名前が2つあると、切りかえそのものが飛ばされます。一覧に写真が何枚も並ぶときは、work-01、work-02 のように1枚ずつ別の名前にし、詳細のページではその作品の名前だけをつけます。
使えるのは、同じサイトの中だけ
MDNによると、ページ間の切りかえが動くのは、前と後のページが同じオリジン(ざっくり言うと同じサイト)のときです。よそのサイトへのリンクや、別のドメインへ移るときは、今までどおりに切りかわります。
数値を変えるとどうなるか
切りかえの長さ
1の見本の切りかえの長さだけを変えて並べました。2のコードなら、0.4s の部分を書きかえます。
0.15秒では、ほとんどパッと切りかわったように見えます。1.2秒になると、次のページを読みたいのに待たされている感じが出てきます。ページの移動は何度もくり返す操作なので、KAKERUでは0.3〜0.4秒ほどにしています。
すべる距離
2のコードの translateX(30%) は、横に動く距離です。100%にすると画面の端から端まで大きく動き、ページ全体が流れていくように見えます。動く距離が大きいほど目で追う量が増えるので、ページ全体を動かすときは小さめにしておきます。
対応状況と、見る人への配慮
ページ間の切りかえは、Firefoxが未対応
MDNの対応表(2026年11月13日確認)では、ページとページのあいだの切りかえ(@view-transition)は、Chrome・Edgeが126から、Safariが18.2から対応し、Firefoxはまだ試験中です。同じページの中の切りかえ(document.startViewTransition())と view-transition-name は、2025年10月から主要なブラウザの最新版で動く「Baseline 2025」になっています。対応していないブラウザでは、指定が無視されてふつうに切りかわるだけなので、ページが見られなくなることはありません。
動きを減らす設定の人には、動きをなくす
ページ全体が溶けたりすべったりする動きは、画面の広い範囲が動きます。W3Cは、操作をきっかけに起きる動きのうち、なくてもよいものは止められるようにすることを求めています。4のコードで、prefers-reduced-motion: reduce(動きを減らす設定がオン)のときは、写しの動きをすべて止めます。
読み上げとキーボード操作
View Transitions は見た目の動きだけを変える指定で、リンクやボタンの働きはそのままです。応用の見本でも、ボタンは <button> を使っているので、キーボードのTabキーで選んでEnterキーで押せます。写真には、これまでどおり alt で内容を書いておきます。
やりすぎ注意
ページ全体を大きく回転させる、毎回ちがう動きをつける、といった目立つ切りかえは、何度もページを移るうちに疲れます。写真をつなげる3の形も、1ページにつなげるのは1枚までにすると、どこが変わったのかがはっきりします。
AIに頼むなら
Claudeなどの生成AIに頼むときは、「ページの切りかえをなめらかに」だけでなく、どのページのあいだで、どのくらいの長さで、動きを減らす設定をどうするかまで伝えると、手直しが減ります。
WordPressの追加CSSに入れる、View Transitionsのページ切りかえを作って。
JSは使わず @view-transition で、クロスフェードを0.3秒に。
prefers-reduced-motion が reduce のときは動きをなくして。AIが出したコードは、そのまま使う前に、次の3つを確かめます。
- JSのライブラリを足していないか。ページ間の切りかえは、CSSの
@view-transitionだけで作れます。ページをJSで読み込み直す仕組み(ページ遷移ライブラリ)が出てきたら、ほんとうに必要かを考えます - 同じ名前が2つ以上ないか。
view-transition-nameを一覧の写真すべてに同じ名前でつけると、切りかえが飛ばされます。1枚ずつ別の名前になっているかを見ます - 動きを減らす設定で止まるか。パソコンやスマホの「視差効果を減らす」「アニメーションを減らす」などの設定をオンにして、ページの移動がパッと切りかわるかを確かめます
KAKERUならこう使う/使わない
最後に、作り手としての判断です。
使う場面
- 施工事例・商品の一覧から詳細へ。3の形で写真をつなげると、「さっき押した写真の続きだ」と分かりやすくなります
- サイト全体の、さりげない切りかえ。1の形を0.3秒ほどで全ページに入れると、ページを移るときの白い一瞬がやわらぎます
- 同じページの中の表示の切りかえ。応用のように、一覧の並べ方を変える・写真を大きくするなどの場面で、何が変わったかを目で追えるようにします
使わない場面
- お問い合わせフォームや購入の手続き。入力の途中で画面が動くと、落ち着いて進めにくくなります。手続きのページは、ふつうの切りかえにします
- 目立たせるためだけの大きな動き。回転・拡大など目立つ動きは、2回目からは待ち時間に感じられます
- Firefoxでも同じ見え方が必要な演出。ページ間の切りかえは、2026年11月時点でFirefoxでは動きません。「動けばうれしい」程度の飾りとして使います

KAKERUなら、1と4をセットで全ページに入れて、一覧から詳細へ移るところだけ3で写真をつなげます。
動きは0.3秒ほど。気づく人だけ気づく、くらいがちょうどいいと考えています。
まとめ
@view-transition { navigation: auto; }を両方のページに書くと、同じサイトの中のページ移動が「ふわっ」と切りかわる- 動きを変えるときは、
::view-transition-old(root)と::view-transition-new(root)にCSSアニメーションを当てる view-transition-nameで同じ名前をつけた要素は、ページをまたいでつながって動く。名前は1ページに1つずつ- ページ間の切りかえはFirefoxが未対応。対応しないブラウザではふつうに切りかわる
- 動きは0.3〜0.4秒ほどに短くし、動きを減らす設定では止める
まずは1と4のコードを、WordPressの「追加CSS」に入れて、サイトの中のリンクをいくつか押してみてください。
参考にした資料
いずれも2026年11月13日に確認しました。内容は変わることがあります。最新の情報は各ページでご確認ください。
- MDN「@view-transition」(英語)
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@view-transition
※別のページへ移るときの切りかえ(cross-document)に使うこと。前と後の両方のページが同じオリジン(同じサイト)である必要があること。navigation: auto の条件。主要なブラウザすべてでは動かない(Baselineではない)とされていること。対応表(Chrome・Edge 126、Safari 18.2。Firefoxは試験中) - MDN「Using the View Transition API」(英語)
https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using
※初期の切りかえは、前の写しが不透明から透明へ、次の写しが透明から不透明へ動くクロスフェードであること。view-transition-name は表示中の要素ごとに重ならない名前にする必要があり、同じ名前が2つあると切りかえが飛ばされること。::view-transition-old / new にCSSアニメーションを当てて動きを変えられること - MDN「view-transition-name」(英語)
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/view-transition-name
※名前をつけた要素は、ページ全体とは別の写しとして動くこと。Baseline 2025(2025年10月から主要ブラウザの最新版で動く) - MDN「Document: startViewTransition() method」(英語)
https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition
※同じページの中の切りかえを始める方法であること。Baseline 2025 - MDN「prefers-reduced-motion」(英語)
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-reduced-motion
※見る人が、端末の設定で動きを減らすよう求めているかを調べられること - W3C「Understanding Success Criterion 2.3.3: Animation from Interactions」(英語)
https://www.w3.org/WAI/WCAG22/Understanding/animation-from-interactions.html
※操作をきっかけに起きる動きは、なくてもよいものなら止められるようにすること
ふだんの制作の話や、作ったものの裏側は Instagram と X でも出しています。


























連載「WEBの技術」の59回目です。
今回は、ページの切りかえをなめらかにするView Transitionsです。ページの中ではなく「ページとページのあいだ」に効く、少し変わった技術です。