基本的な考え方
動くきっかけを指定するには、HTML内の「動かす要素」に「動くきっかけの起点となるクラス名」を付け、jQuery側で動くきっかけの動作(スクロールなど)したら、アニメーション用のCSSクラス名が付与されるという指定をする。
以下の例は、スクロールをしてクラス名fadeUpTriggerの位置まで来たら、fadeUpというクラス名を付与してふわっと出現されるコードである。
<!-- 「ふわっ」という動くきっかけの起点となるクラス名を「fadeUpTrigger」と付ける -->
<div class="box fadeUpTrigger"></div>
<div class="box fadeUpTrigger"></div>
.box {
margin: 500px 0 25px;
width: 100px;
height: 100px;
background: #999999;
}
/* 動くきっかけの起点となるクラス名に「透過0(opacity: 0;)」の指定 */
.fadeUpTrigger {
opacity: 0;
}
/* jQueryで付与されたアニメーション用のCSSクラス「fadeUp」には「透過していた要素を下から出現」する指定を行う */
.fadeUp {
animation-name: fadeUpAnime;
animation-duration: 2s;
animation-fill-mode: forwards;
}
/* 変化の終了時にopacty: 0;が打ち消され、opacity: 1;(不透明の状態)になる。 */
/* また、下100pxから0pxの位置へ移動して出現する */
@keyframes fadeUpAnime {
from {
opacity: 0;
transform: translateY(100px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
function fadeAnime() { //動かすきっかけを独自のアニメーションの名前で定義
$(".fadeUpTrigger").each(function () { //fadeUpTriggerというクラス名が
const elemPos = $(this).offset().top - 50; //上の50pxより
const scroll = $(window).scrollTop();
const windowHeight = $(window).height();
if (scroll >= elemPos - windowHeight) {
$(this).addClass("fadeUp"); //画面内に入ったらfadeUpというクラス名を追記
} else {
$(this).removeClass("fadeUp"); //画面外に出たらfadeUpというクラス名を外す
}
});
}
//画面が読み込まれた後に動く記述
$(window).on("load", function () {
fadeAnime();
});
//画面がスクロールされたら動く記述
$(window).on("scroll", function () {
fadeAnime();
});