jQuery
ページ内スクロールのナビゲーションにカレントを付与する
サイドカラムのナビゲーションからページ内の各セクションにスクロールするページ
メインコンテンツまでスクロールするとサイドバーが追従して、現在地を示すためのナビゲーションが表示される
HTML
section01
この文章はダミーです。この文章はダミーです。この文章はダミーです。この文章はダミーです。
section02
この文章はダミーです。この文章はダミーです。この文章はダミーです。この文章はダミーです。
section03
この文章はダミーです。この文章はダミーです。この文章はダミーです。この文章はダミーです。
jQuery
$(function () {
$(window).on('load scroll resize', () => {
const nav = $('.js-location-nav'),
//ナビゲーションの位置を取得
navPosition = nav.offset().top,
//現在のスクロール位置を取得
scroll = $(window).scrollTop();
//ナビゲーションの位置までスクロールしたか判定
if (scroll >= navPosition) {
const content = $('.js-location-content section');
//コンテンツごとに繰り返し処理
content.each(function (i, e) {
//コンテンツの開始位置を取得
const target = $(this).offset().top,
//コンテンツの終了位置を取得
targetPosition = target + $(this).innerHeight(),
//コンテンツのID属性を取得
id = $(e).attr('id');
//該当するコンテンツまでスクロールしているか判定 && 該当するコンテンツを通り過ぎたか判定
if (scroll >= target && scroll < targetPosition) {
//該当するhref属性にクラスを付与
nav.find('a[href^="#' + id + '"]').addClass('is-current');
} else {
//該当しないhref属性はクラスを削除
nav.find('a[href^="#' + id + '"]').removeClass('is-current');
}
});
}
});
});