2016-06-12 69 views
3

導航欄的工作方式和平滑滾動一樣,但我無法更改偏移。我的導航是86px,但無論多少像素我改變它仍然去同一個地方。引導偏移滾動不起作用

$(document).ready(function() { 
    $('body').scrollspy({target: ".navbar", offset: 86}); 
    $("#myNavbar a").on('click', function(event) { 
     if (this.hash !== "") { 
      event.preventDefault(); 
      var hash = this.hash; 
      $('html, body').animate({ 
       scrollTop: $(hash).offset().top 
       }, 800, function(){ 
       window.location.hash = hash; 
      }); 
     } 
    }); 
}); 

我將信息直接添加到body標籤,但仍然沒有變化。我知道,jQuery的工作,因爲它確實滾動平滑和崩潰導航工程以及。

<body data-spy="scroll" data-target=".navbar" data-offset="86"> 

回答

3

我不認爲偏移做你認爲它的確如此。我不確定'滾動到'的位置。你必須用填充來做到這一點。

此處的偏移量意味着屏幕頂部與滾動到的部分之間的距離。換句話說:它所做的全部工作就是確定navbar>標籤在哪一刻變爲活動狀態。

結帳出來:https://jsfiddle.net/wietsedevries/gu0b0dg2/1/

在這個例子中,我設置data-offset="51",導航欄的高度也51px,所以當我向下滾動導航欄>標籤變爲激活狀態,什麼時候導航欄點擊這部分。

+0

好的,謝謝你,這是有道理的。有沒有其他的方式,而不是使用填充來調整頁面結束時,當你點擊一個導航欄>標籤?現在,我有容器div給定ID如家關於etc. – JonW

+0

該頁面滾動到與相應的ID元素,所以你可以添加一個隱藏的虛擬元素與該ID並將其放置在你想要的位置。 –

+0

如果這回答了你的問題,請標記爲已回答;) –

0

是的,偏移量僅用於確定導航鏈接何時高亮顯示。點擊鏈接時不要定位屏幕。即滾動部分取決於你。你可以使用一個小小的JS來做這樣的事情:

var offset = 80; 

    $('.navbar li a').click(function(event) { 
     event.preventDefault(); 
     $($(this).attr('href'))[0].scrollIntoView(); 
     scrollBy(0, -offset); 
    });