1. ホーム
  2. javascript

[解決済み] JQuery Scroll to Offset from top of browser?

2022-02-11 07:14:44

質問

次のようなスクロールスクリプトがありますが、ページをうまくスクロールしてくれます。

$(function(){
    $('a[href*=#]').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
        && location.hostname == this.hostname) {
            var $target = $(this.hash);
            $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
            if ($target.length) {
                var targetOffset = $target.offset().top;
                $('html,body').animate({scrollTop: targetOffset}, 1000);
                return false;
            }
        }
    });
});

しかし、ページの上部に固定ヘッダーがあり、コンテンツはその後ろにスクロールするため、上部(200px)を無視して表示する必要があります。

つまり、一番上までスクロールすると、コンテンツが固定ヘッダーの後ろまでスクロールしてしまい、見ることができないので、ヘッダーのすぐ下までスクロールさせる必要があります。

とても便利だと思うのですが、これは可能でしょうか?

よろしくお願いします。

解決方法は?

こんな感じでいいでしょうか?

var targetOffset = $target.offset().top - 200;

または、header 要素の高さを取得してオフセットを追加します。

var targetOffset = $target.offset().top - $("element").outerHeight(true);