我有一個導航欄,它固定到屏幕頂部後,它向上滾動160px。如果導航欄已經固定在屏幕的頂部,我也可以使用平滑的滾動條進行定位鏈接,但是如果導航欄在滾動160px之前處於其未定義狀態,則錨點滾動條不會進入說明我添加的40px緩衝區。滾動以固定導航欄錨定,導航滾動後修復導航
我希望平滑滾動滾動到正確-40px的錨點,不管導航欄是否固定。是
的兩批我使用的代碼如下:
1)平滑滾動
jQuery(document).ready(function($) {
$('a[href*="#"]:not([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) {
$('html, body').animate({
scrollTop: target.offset().top - 40
}, 750);
return false;
}
}
});
});
2)固定導航欄
jQuery(document).ready(function($){
$(function() {
$(window).resize(function() {
// responsive nav primary fixed
if (window.innerWidth > 960) {
$(window).bind('scroll', function(){ if ($(window).scrollTop() > 160) {$('.nav-primary').addClass('nav-primary-fixed');} else {$('.nav-primary').removeClass('nav-primary-fixed');}});
} else {}
// end responsive nav primary fixed
}) .resize(); // trigger resize event
});
});
任何想法?
在此先感謝。
檢查導航欄是否具有「nav-primary-fixed」類,然後相應地修改40值......? – CBroe
我不確定你是否誤解了這個問題。如果網站已經滾動超過160像素,並且導航欄已分配了「nav-primary-fixed」,則錨點滾動完美。如果站點沒有從頂部滾動並且導航欄尚未修復,它不會正確對齊錨點。因此,例如在頁面加載時,如果我點擊並錨定鏈接,它將滾動到錨點,但錨點的頂部將隱藏在導航欄後面40px。 如果你的解決方案是前進的正確方法,我不知道如何去編碼到我當前的代碼。 – SharpenedPixels
只有在導航欄被固定的情況下,您才需要這些40px的偏移量。因此,檢查它是否(.hasClass) - 並根據這一點,減去那些40px,或不。 – CBroe