《jQuery》上部に固定要素がある場合のページ内スクロール
公開日:2023年09月14日 最終更新日:2024年2月27日
上部に固定表示がある場合にページ内スクロールがずれてしまうので、JSでスクロール位置を調整しています。
href=”#”の時はページトップにスクロールします。
DEMO
position: fixed;を使用しているため、別ページにDEMOを用意しました。
HTML
<div class="nav">
固定ヘッダー
</div>
<div class="contents">
<ul>
<li><a href="#title1">タイトル1</a></li>
<li><a href="#title2">タイトル2</a></li>
</ul>
<div class="title" id="title1">タイトル1</div>
<div class="title" id="title2">タイトル2</div>
<ul>
<li><a href="#title1">タイトル1</a></li>
<li><a href="#title2">タイトル2</a></li>
<li><a href="#">ページトップへ戻る</a></li>
</ul>
</div>
CSS
スクロール動作をわかりやすくするための装飾です。
好きにアレンジしてください。
.nav {
background: #333;
background: rgba(51,51,51,.9);
color: #fff;
padding: 10px;
position: fixed;
top: 0;
width: 100%;
}
.title {
height: 1000px;
}
JS
JSの記述の前にjQueryの読み込みが必要です。
jQuery(function($){
var headerHeight = $('.nav').outerHeight();
$('.contents').css('margin-top', headerHeight);
$('a[href^="#"]').on('click', function() {
var href = $(this).attr('href'),
target = (href == '#' || href == '') ? 0 : $(href).offset().top - headerHeight;
$('html, body').animate({scrollTop:target}, 500, 'swing');
return false;
});
});