3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事の概要

View Transitions API によって、JavaScript なしでもリッチなページ遷移が行えるようになりました。

View Transitions そのものの使い方については以下の記事が分かりやすかったのでご覧ください。

これらの内容を見ていて、ふと気になったことがありました。

共通の要素が画面内でアニメーションしている間、Intersection Observer は要素が画面内に入った・画面外から出たという判定はどのように行うのでしょう。

ということで簡単にですが調べてみて、記事にしました。

結論

View Transitions API を使用していないときと何も変わらない。

すみません。なにも面白くない結果になりました。

せめて少しでも役に立つ記事にするため、調べていて確かめられたことを書きます。

  • トランジション完了をトリガーにして何かの処理を追加するのは、できない
    • 当初は「トランジション完了したら他の要素がアニメーションする」ようなことがしたかった
    • isIntersectingtrueとなるのは、トランジション完了時ではない
  • トランジション中のどこかをトリガーにしてisIntersectingfalseになったのを検出するのは、できない
    • 当初は「消えかける要素をトリガーにして別の場所をアニメーションさせる」ようなことがしたかった
    • isIntersectingfalseにすらならない
  • あくまで前のページと新しいページをアニメーションで繋いでいるに過ぎないので、アニメーションが無かった場合にtruefalseとが変わるタイミング自体は同じ

実験していた内容

下記の条件でView Transitions APIを使用した際、していない際で挙動を比べていました。

  • view-transitionのアニメーション時間を長くする
  • entry.isIntersectingtrueのときに描画されましたとメッセージを表示する
  • entry.isIntersectingfalseのときに見えなくなりましたとメッセージを表示する
  • DOMContentLoadedloadのときにメッセージを表示する

補足:view-transitionのアニメーション時間を長くすること

アニメーション時間を意図的に長くしておいた方が、console にメッセージが表示されるタイミングと、見た目上の処理が完了したタイミングを見比べやすかったので、実施していました。

::view-transition-group(*) {
  animation-duration: 1s;
}
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?