web関連

スクロール時にヘッダーにクラス追加

スクロール時にヘッダーにクラス追加

固定ヘッダーを使用する時のコードメモ

スクロールしたらヘッダーにクラスを振るコード

$(function () {
  var headerBar = $('header');
  $(window).scroll(function () {
    hsize = $('header').height();
    if ($(this).scrollTop() > hsize) {
      headerBar.addClass('scroll');
    } else {
      headerBar.removeClass('scroll');
    }
  });
});
ヘッダーの高さを取得して、高さ以上の時はクラス「scroll」を追加それ以下の時はクラスを除去する記述。

スクロールしたら上からピョコってでてくる固定ヘッダー

$(function () {
  var flag = false;
  var headerBar = $('header');
  $(window).scroll(function () {
    hsize = $('header').height();
    if ($(this).scrollTop() > hsize) {
      if (flag == false) {
        flag = true;
        headerBar.addClass('scroll');
        $('.scroll').css({'top': -hsize});
        $('.scroll').animate({'top': '0px'}, 700);
      }
    } else {
      if (flag == true) {
        flag = false;
        headerBar.removeClass('scroll');
      }
    }
  });
});

さっきと違うのは、条件分岐が1つ増えたことくらい。
スクロール値がヘッダーの高さを超えたらcss「top」で上からアニメーションしながら降りてくるやつです。

flagの条件分岐がないと固定ヘッダーの挙動がスクロールするごとに点滅するので入れてます。
たぶんflagで真偽判定ないとスクロールするたびにcss「top」の部分が動いちゃうんだろうと…

PC時は固定ヘッダーあってもいいと思うが、スマホ時の固定ヘッダーっているんすかね? ハンバーガーメニューまったく押されていない気がする…