2014-02-09 31 views
2

Hello Stackoverflow bootstrappers!調整瀏覽器大小時的bootstrap scrollspy bug

我沒有看到這個問題之前已經被問過了,我真的很感興趣看到結果。

如何複製錯誤:

  1. 打開頁面:(我目前的URL測試這個錯誤)http://dnwebdev.com/dev/
  2. 調整頁面大小到平板
  3. 使用導航欄

(請注意,網址已更改爲包含#section)只有在調整瀏覽器大小時纔會發生這種情況。這會導致間諜/滾動關閉。

NOTE:如果您在移動設備上打開它,問題不會發生,因此客戶端將不會面對它,它只是竊聽我。

謝謝,期待您的回覆。

編輯:當點擊標題品牌的URL添加#section-1無需調整大小,這也扔掉了我。在這一點上,我認爲這是一個引導性的東西。

唯一Javascript我有我的網頁上是如下:

function close_toggle() 
{ 
    if ($(window).width() <= 768) 
    { 
     $('.nav a').on('click', function() { 
       $(".navbar-toggle").click(); 
     }); 
    } 
    else 
    { 
     $('.nav a').off('click'); 
    } 
} 

close_toggle(); 

$(window).resize(close_toggle); 

上面的代碼關閉一個選擇是移動後作出切換。

if ($(window).width() <= 768) 
{ 
    var offset = 75; 
} 
else 
{ 
    var offset = 90; 
} 

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

上述(基於屏幕尺寸)的代碼會抵消scrollspy

編輯#2

我需要的任何偏移的唯一原因是由於fixed-top這導致scrollspy焦慮不安。

非常感謝幫助。

回答

1

固定頂部似乎帶有滾動間諜的bug讓我別無選擇,只能使用JavaScript。

0

要處理導航正確的高亮顯示,您必須考慮scrollTop值等於零時所執行的所有scrollSpy計算。

因此,解決辦法是這樣的:

var refreshScrollSpy = function (element, navElement, offset) { 
// cache current scroll position to come back after refreshing 
var cacheScrolltop = $(element).scrollTop(); 
    $(element) 
    .scrollTop(0) 
    .scrollspy(‘refresh’) 
    .scrollTop(cacheScrolltop); 
}; 
相關問題