2016-10-11 11 views
1

に応じてオフセット。問題は、私は、ヘッダ項目のメニューをクリックしてセクションに身体をアニメーション化する必要があるということです。スクロールは、私は、ウィンドウのスクロールに応じて、その高さを変更し、ヘッダーをしたヘッダの高さ

$('a.smoothScroll').on('click', function(e) { 
    e.preventDefault(); 
    var $target = $($(this).attr('href')); 
    var $header = $('header'); 
    $('html, body').animate({ 
     scrollTop: $target.offset().top - $header.height() + 'px' 
    }, 300); 
}); 

ので、ページは私がメニュー項目をクリックすると、$headerは、高さの値を持っている、ロードされるとスクロールが251ピクセルに達すると、その値が変化し、アニメーション機能に通知する方法がわかりません。

私はこの時点で立ち往生していますが、ページを適切な値にスクロールさせるにはどうすればよいですか?

+0

迅速jsfiddleを一緒に置くことができますか? – UltrasoundJelly

答えて

1

短縮したヘッダーの高さを戻すだけです。

$(window).scroll(function() { 
 
    var $header = $('.header'); 
 
    if ($(this).scrollTop() > 100) { 
 
    if (!$header.hasClass('sticky')) $header.addClass("sticky"); 
 
    } else { 
 
    if ($header.hasClass('sticky')) $header.removeClass("sticky"); 
 
    } 
 
}); 
 
$('.smoothScroll').on('click', function(e) { 
 
    e.preventDefault(); 
 
    var $target = $($(this).attr('data')); 
 
    var $header = $('.header'); 
 
    $('html, body').animate({ 
 
    scrollTop: $target.offset().top - $header.height() + 50 + 'px' 
 
    }, 300); 
 
});
.header { 
 
    height: 200px; 
 
    background-color: grey; 
 
} 
 

 
.sticky { 
 
    height: 50px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class=header>HEADER!</div> 
 
<button class=smoothScroll data="#1">clickMe 
 
</button> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<div id=1>Scroll to Me</div> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
 
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>

+0

ありがとうございますが、問題は私が動的にそれを行う必要があるということです。とにかく、あなたは私に良いアイデアをくれました。あなたの例に基づいて、DOMの準備が整ったらクラスの追加と削除を行います。 – pg02

+0

ニース。これがあなたを助けたら、受け入れられた答えとしてマークしてください。 – UltrasoundJelly

関連する問題