125naroom / デザインするところ(...


【jQuery】ページ内リンクでスムーズスクロール(固定ヘッダーがあったら) | 125naroom / デザインすると...
するする動くと楽しいですねー 固定ヘッダーがある場合はクラスやIDを指定して高さ調整しましょうー JavaSc
目次
JavaScript
固定のヘッダー(ナビ)がある場合はヘッダー分の高さを調整しなければなりません。レスポンシブだと高さが変わってしまいます。そんな時には『ヘッダー』のクラスやIDを指定してあげれば面倒な調整は不要になります。ちなみに今回の『ヘッダー』は『header』を使っています。
▽簡単な説明を記載しています。
$(function(){
var headerHeight = $('header').outerHeight(); // ヘッダーについているID、クラス名など、余白を開けたい場合は + 10を追記する。
var urlHash = location.hash; // ハッシュ値があればページ内スクロール
if(urlHash) { // 外部リンクからのクリック時
$('body,html').stop().scrollTop(0); // スクロールを0に戻す
setTimeout(function(){ // ロード時の処理を待ち、時間差でスクロール実行
var target = $(urlHash);
var position = target.offset().top - headerHeight;
$('body,html').stop().animate({scrollTop:position}, 500); // スクロール速度ミリ秒
}, 100);
}
$('a[href^="#"]').click(function(){ // 通常のクリック時
var href= $(this).attr("href"); // ページ内リンク先を取得
var target = $(href);
var position = target.offset().top - headerHeight;
$('body,html').stop().animate({scrollTop:position}, 500); // スクロール速度ミリ秒
return false; // #付与なし、付与したい場合は、true
});
});▽JavaScriptには以下の記述でオッケーです。
$(function(){
var headerHeight = $('header').outerHeight();
var urlHash = location.hash;
if(urlHash) {
$('body,html').stop().scrollTop(0);
setTimeout(function(){
var target = $(urlHash);
var position = target.offset().top - headerHeight;
$('body,html').stop().animate({scrollTop:position}, 500);
}, 100);
}
$('a[href^="#"]').click(function(){
var href= $(this).attr("href");
var target = $(href);
var position = target.offset().top - headerHeight;
$('body,html').stop().animate({scrollTop:position}, 500);
return false;
});
});