jQuery アニメーション Web制作 コーディング

【jQuery】スクロールして要素が画面内に入ったらフェードインさせる方法

スクロールするとフワっと浮き出てくるフェードインってどうやって実装するんだろう?

今回はそんな疑問にお答えします。

ここではプラグインを使わない方法ですが、正直プラグイン使う方がおススメです(^^;

プラグインを使った方法については以下の記事を参照下さい。

【jQueryプラグイン】inview.jsでスクロールして表示領域に入ったらフェードインさせる方法

スクロールして要素が画面内に入ったらフェードインさせる方法

フェードインはプラグインを使っても出来ますが、今回はプラグインなしでjQueryを使って実装していきます。

フェードインは上下左右どの方向からでも可能で、タイミングやフェードの時間も調整可能です。

 

下からのフェードイン

まずは基本となる下からのフェードインを見てみたいと思います。

See the Pen
フェードイン(アップ)
by junpei (@junpei-sugiyama)
on CodePen.


背景はあった方が見やすいかと思ったので付けましたが、CSSは基本的に気にしなくて大丈夫です。

まずはHTMLですが、これはフェードインさせたい要素にjQueryで使うclassを付けるだけです。

上記でいえばclass="scroll-fade-up"となります。

 

そしてjQueryですが、フェードのタイミング、移動距離、スピードなどは以下の箇所で調整可能です。

<!-- jQuery --> 
const fade_bottom = 50; // 画面下からどの位置でフェードさせるか(px)
const fade_move = 100; // どのぐらい要素を動かすか(px)
const fade_time = 800; // エフェクトの時間(ms)

またjQueryでフェード前のCSSを定義します。

$(".scroll-fade-up").css({
  opacity: 0,
  transform: "translateY(" + fade_move + "px)",
  transition: fade_time + "ms",
});

最初はopacity: 0,で見えないようにしています。

また2行目ですが、

  • 変更前:transform: "translateY(" + fade_move + "px)"
  • 変更後:transform: "translateY(-" + fade_move + "px)"

とすると下からではなく上からフェードインします(あまり使わないと思いますが)

 

横からのフェードイン

次は横からのフェードインを見てみます。

See the Pen
フェードイン(サイド)
by junpei (@junpei-sugiyama)
on CodePen.

HTML、CSSは先ほどと同じで、jQueryもほぼ同じです。

jQueryで変わった点は、translateY が translateX になった事です。

変化の軸がY軸(縦)からX軸(横)になったという事ですね。

上記は左からフェードインしますが、こちらも先ほど同じ位置にマイナスを付ければ今度は右からフェードインします。

以上です。

-jQuery, アニメーション, Web制作, コーディング