Written by Kasumi

【簡単】別ページのアンカーリンクでもスムーズスクロールさせる方法

ページ内アンカーリンクでスムーズスクロールを実装したが、別ページのアンカーリンクに飛んだ時も、スムーズスクロールさせたい!

このような疑問に回答します。

本記事では別ページでも、アンカーリンクへスムーズスクロールさせる方法について解説します。

script内に以下ソースを記述

$(function () {
    // 別ページの場合は以下
  var urlHash = location.hash;
  if (urlHash) {
    $('body,html').stop().scrollTop(0);
    setTimeout(function(){
      // ヘッダー固定の場合はヘッダーの高さを数値で入れる、固定でない場合は0
      var headerHight = 0;
      var target = $(urlHash);
      var position = target.offset().top - headerHight;
      $('body,html').stop().animate({scrollTop:position}, 400);
  }, 100);
}
});

上記ソースをscript内にコピペしましょう。

これだけで別ページのアンカーリンクもスムーズスクロールしてくれます。

通常のページ内リンクと違う点としては以下部分になります。

var urlHash = location.hash;
if (urlHash) {
var target = $(urlHash);
var position = target.offset().top - headerHight;
$('body,html').stop().animate({scrollTop:position}, 400);
}

上記ソース部分のlacation.hashとif文で、リンクにアンカーがあるかどうがを判別。ある場合はページトップからアンカーまでをスムーズスクロールさせる、というものです。

スムーズスクロールの実装に関して、詳しい詳細は以下記事を参照↓
https://kasumiblog.org/smooth-scroll/

まとめ

別ページのアンカーリンクではスムーズスクロールが動かない。。という事象が結構ありました。
同じお悩みの方で、本記事を参考にしていただくと幸いです。

以上で解説を終わります。

目次

関連記事

HTMLCSS jQuery

【CSS】高さ100vh指定時のスマホステータスバーを除く方法

更新日:2022.09.09
2615
jQuery

jQueryを使って、checkしたinput要素の label値を取得する方法

更新日:2022.09.09
10843
jQuery

【簡単】jQueryプラグインのlightboxを使って、画像モーダルウィンドウを実装しよう。

更新日:2022.09.09
5599
jQuery

【簡単】jQueryのDatepickerに時間設定を追加したDatetimepickerを導入する方法

更新日:2022.09.09
9647