スクロールした時に下からふわっと文字を出す方法~CSS、jQueryを駆使~

中山テック 代表の中山です。

さて、今まではブログ→動画で補足という流れでございましたが・・・

当ブログにおいては動画→ブログの補足となります。

動画編集の勉強を兼ねてやっておりましたが、最近は内容次第で動画をアップすることが増えてきました。

今回は動画(ショートですが)で出した「ホームページを作る」からスクロール→ふわっと出す方法についてお話したいと思います。





1分未満のショート動画としてYouTubeにアップしました。

モックとして作成したBEFORE⇒AFTERへの流れを簡潔に流してます。

よろしければご覧のうえ、面白いと思ったらチャンネル登録・高評価お願いいたします。



コード

こちらはスクロールしてフェードインしていくもの

HTML

<p class="scroll-up">我々は何も成し遂げていない。</p><br><br>
<p class="scroll-up">だがしかし、何をすれば<br><br>良いかもわからない。</p><br><br><br><br>
<p class="scroll-up">まずは色々なことに挑戦し<br><br>何かをやり遂げる・・・</p>

抜粋となります。

pタグ(文字の1つの段落として表示するHTMLタグ)に「scroll-up」と入れてます。

これはCSSのクラスを読み込んでおりますのでさほど難しくはないでしょう。

CSS

.scroll-up {
  opacity: 0; 
  visibility: hidden;
  transform: translateY(100px);
  transition: all 1s;
}
.scroll-up.is-show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0px);
}

上記動画の32秒頃が前項HTMLとの組み合わせとなります。

「.scroll-up.is-show」はJavascript(jQuery)で制御しています。

・opacity⇒透明度を表しています。0は透明なので何も表示されません。is-showで1にして表示。

・visibility⇒hiddenで要素を不可視、visibleで可視にします。不可視にしても見えないだけでスペースは残ります。

・transform⇒要素の変更です。translateYの100px指定ということで、元々の場所から縦100px下に配置します

・transition⇒プロパティを指定します。プロパティってなんぞ?と思うでしょうが動きのことを指します。

例としてはallをnoneにするとわかりやすいと思います。「1s」が効かず、「is-show」がパッと表示されます。

「きっちりプロパティを定義して!」と思いの方、「transition-duration: 1s;」で同義ですので、ぜひ試してみてください!

  • システム開発関連記事

jQuery

$(function () {
  $(window).scroll(function () {
    const windowHeight = $(window).height();
    const scroll = $(window).scrollTop();

    $('.scroll-up').each(function () {
      const targetPosition = $(this).offset().top;
      if (scroll > targetPosition - windowHeight + 100) {
        $(this).addClass("is-show");
      }
    });
  });
});

ふわっとさせるにはJavascript(jQuery)制御が必須です。

理由は「隠れている文字の〇〇pxまで来たら」という命令がCSSではできないからです(HTMLもできない)。

「.scroll-up」が表示前のCSS、「is-show」が表示後になるので、コピペして使いたい方はそこだけ変えてください。

※ローカル(オフライン)だと正常に動かないことも多々ありますので、WEB上で試すのが吉



我々は何も成し遂げていない。


だがしかし、何をすれば

良いかもわからない。


まずは色々なことに挑戦し

何かをやり遂げる・・・



また、ふわっとした箇所を表示したり消したい場合はif文の下にコードを追加してください。

※下記コードがない場合は1回だけふわっとします

何度もふわっとさせるとしつこく感じる方もいらっしゃるので、1回が良いかと思います。状況に応じて使い分けてください。

 else {
    $(this).removeClass("is-show");
 }

Javascript(jQuery未使用)

function scroll_effect() {
  var element = document.getElementsByClassName('scroll-up');
  if(!element) return;
                      
  var scrollY = window.pageYOffset;
  var windowH = window.innerHeight;
  var showTiming = 200; // 要素を表示するタイミング
  for(var i = 0; i < element.length; i++) { 
    var elemClientRect = element[i].getBoundingClientRect(); 
    var elemY = scrollY + elemClientRect.top; 
    if(scrollY > elemY - windowH + showTiming) {
      element[i].classList.add('is-show');
      
    }
  }
}

window.addEventListener('scroll', scroll_effect); // スクロール時に実行


jQueryはわかりづらい!という方は通常のJavascriptでも表現できます。

上記コードは前項と同義ですので、使いやすい方で試してみてください!

addEventListenerもお忘れなく。

開発者ツールを使ってブレイクポイント貼るとわかるのですが、スクロールする度に呼ばれるので多少処理は重くなります。

※jQueryも同様ですが

まとめ

さて、ホームページでよく使われる下からふわっと浮き出るアニメーション。

HTML+CSS+Javascript(jQuery)の組み合わせになりますが、慣れたら難しくないです。

特にWEB制作では基本のプログラムなので是非覚えて欲しいです!

また、誤りやアドバイス等ございましたら、いつでもコメントやメール、Twitterでも承っております。

最後までご覧頂き、ありがとうございました。

※中山テックに掲載しているゲーム画像の著作権、商標権、その他知的財産権は、当該コンテンツの提供元に帰属します


おすすめの記事