1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【jQuery】ヘッダーが固定されているページ内でアンカーリンクがずれないようにする

Posted at

こんにちは。E-kan株式会社の岡田です。

ヘッダーが固定されているページ内でアンカーリンクを使うと着地点がずれてしまう問題、よくあると思うのですが私もよく遭遇するので備忘録。
これ、移動距離に固定ヘッダーの高さを足してあげれば良いということで…

jQuery

// ヘッダーの高さを取得してその分コンテンツを下げる
$(function() {

  // #で始まるa要素をクリックした場合の処理
  // "#"はダブルクォーテンションで囲まないと、jQueryのバージョンによっては動かない
  $('a[href^="#"]').click(function() {

    // スクロールの速度(ミリ秒)
    var speed = 500;
    // 移動先をずらすためにheaderの高さを取得
    var adjust = $('header').height();
    // クリックしたページ内リンクの値を取得
    var href = $(this).attr("href");
    // 移動先を取得 リンク先(href)のidがある要素を探して代入
    var target = $(href == "#" || href == "" ? 'html' : href);
    // 移動先を調整 idの要素の位置をoffset()で取得して代入
    var position = target.offset().top - adjust;
    // スムーススクロール linear(等速) or swing(変速)
    $('body,html').animate({scrollTop: position}, speed, 'swing');
    return false;

  });

});

原因を知っていればなんてことはないんだけど、知らないと延々悩んじゃうんですよね…
とりあえず、使ったものは忘れないようにメモしておきます。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?