あなたのキモチ つなげるカタチ

TOP > jQuery > 【jQuery】ページ全体の背景色をスクロールでセクション毎に変更させるテクニック/Scroll change background color

【jQuery】ページ全体の背景色をスクロールでセクション毎に変更させるテクニック/Scroll change background color

スポンサーリンク

この記事は2018年7月26日に公開した記事です。

現在とは状況が違う場合がありますのでご注意ください。

コーディングテクニックの実装内容

ページをスクロールして、セクションに入る度にページ全体の背景色を変更させるテクニックを紹介します。セクション毎に背景色を変更し、セクションのカラーを強調したい時に便利かと思います。

実装所要時間:15分程度
難易度:初心者コーダーでも実装可能

CSS,JavaScriptの記述内容

実装に必要なスクリプトはたったのこれだけです。

$(function(){
  var secArr = new Array();
  var current = -1;
  /* ここに背景色を順に記述する*/
  var secColor = new Array('#36ab77','#e04747', '#e7ff03', '#035fff');
  $('.block').each(function (i) {
      secArr[i] = $(this).offset().top;
  });
  function chengeBG(secNum) {
      if (secNum != current) {
          current = secNum;
          $('.block-bg').css({backgroundColor: secColor[current]});
      }
  }
  $(window).on('load scroll resize',function(){
      for (var i = secArr.length-1; i>=0; i--) {
          if ($(window).scrollTop() > secArr[i]){
              chengeBG(i);
              break;
          }
      }
  });
});

実装のポイント

  • 1) セクション毎に設定する色を配列に格納
  • 2) 各セクションに同名のクラスを付与して(デモページではクラスblock).each()で繰り返しの処理。各クラスblockがスクロールトップに到達した時の処理を指定
  • 3) .css()で各セクションを囲んでいる親要素のdivへbackgroundColorを設定する。また、親要素のdivへはリッチ感をだすためにtransitionでアニメーションを指定
  • 4) スクロールして次のセクションがスクロールトップへ到着した時に背景色の切り替え処理が行われる。スクロールして何回も処理が行われる仕組みは、よく利用されるfor文とifを組み合わたものを使用。

スポンサーリンク

「【jQuery】ページ全体の背景色をスクロールでセクション毎に変更させるテクニック/Scroll change background color」への2件のフィードバック

コメントは受け付けていません。