.box クラスには、初期状態として opacity: 0 と transform: translateY(50px) を設定。
.box.visible クラスが付与されると、opacity: 1 に変化し、translateY(0) となることで、スムーズにフェードイン&スライドアップします。
transform/translate は「どのように要素を変形させるか」を決めるもので、transition はその変形などの状態変化を「どのようにアニメーションさせるか」を指定するためのものです。
document.querySelectorAll('.box') で全ての対象要素を取得。
IntersectionObserver を用いて、各要素が画面内に50%以上見えたら visible クラスを追加します。
一度アニメーションが発火🔥したら、再度監視しないように observer.unobserve(entry.target) を呼び出しています。
「道具箱」のようなもの。Webブラウザが「これが使えますよ!」と提供している機能の集まりです。
// Intersection Observer のコールバック関数 とコメントしている所以下がAPIです。
JavaScriptにおける「監視」とは、データの値、やDOM要素、イベントなどの状態や変化を常にチェックし、変化があった場合に特定の処理を実行する仕組みのこと。
ざっくり言うと「後から呼び出される関数」のこと
一連の処理(コード)をひとまとまりにして名前をつけたもの。関数を呼び出すと、その中に記述された処理が実行される。
関数に渡すデータ(値)のことです。