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

jQuery


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

今回は、

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

 

 

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

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

 


下からのフェードイン

 

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

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を定義します。

<!-- jQuery -->
$(".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軸(横)になったという事ですね。

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

 

以上です。

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