Box 1
Box 2
Box 3
Box 4

解説

CSS 部分

.box クラスには、初期状態として opacity: 0 と transform: translateY(50px) を設定。

.box.visible クラスが付与されると、opacity: 1 に変化し、translateY(0) となることで、スムーズにフェードイン&スライドアップします。

transform,translateとtransition(ややこしい...)

transform/translate は「どのように要素を変形させるか」を決めるもので、transition はその変形などの状態変化を「どのようにアニメーションさせるか」を指定するためのものです。

JavaScript 部分

document.querySelectorAll('.box') で全ての対象要素を取得。

IntersectionObserver を用いて、各要素が画面内に50%以上見えたら visible クラスを追加します。

一度アニメーションが発火🔥したら、再度監視しないように observer.unobserve(entry.target) を呼び出しています。

いろいろな用語について簡単にフォロー

ブラウザAPI

「道具箱」のようなもの。Webブラウザが「これが使えますよ!」と提供している機能の集まりです。

// Intersection Observer のコールバック関数 とコメントしている所以下がAPIです。

参考になりそう

https://www.torat.jp/intersectionobserver/ https://qiita.com/greencha/items/ee49e2acd885eddc5570

「監視」とは

JavaScriptにおける「監視」とは、データの値、やDOM要素、イベントなどの状態や変化を常にチェックし、変化があった場合に特定の処理を実行する仕組みのこと。

「コールバック」とは

ざっくり言うと「後から呼び出される関数」のこと

関数とは?

一連の処理(コード)をひとまとまりにして名前をつけたもの。関数を呼び出すと、その中に記述された処理が実行される。

引数とは?

関数に渡すデータ(値)のことです。