Web制作 jQuery

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

こんにちは!フォトグラファー&Web制作のじゅんぺい(@junpei_sugiyama)です!

今回は、

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

といった方に対する記事となります。

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

フェードインはプラグインを使っても出来ますが、今回はプラグインなしで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軸(横)になったという事ですね。

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

 

以上です。

プラグインは便利ですがたくさん入れると重くなるので、使わなくてもいい所は使わないように出来たらいいですね。

-Web制作, jQuery
-