我正在使用Free Code Camp的可滾動投資組合頁面,並且正在嘗試添加導航突出顯示。通過這個,我的意思是我想讓它在滾過一個部分的頂部(即從「主頁」部分到「關於」部分)之後,與該部分對應的導航鏈接應該突出顯示。這部分我實際上大部分都是想出來的。但是,有一個我似乎無法解決的錯誤。在我到達實際部分之前,從我的投資組合部分到我的聯繫人部分的更改在導航中突出顯示。你們中的任何一個人都可能知道這是爲什麼嗎?嘗試在javascript/jQuery上添加滾動導航突出顯示 - 在計算元素高度時出錯錯誤
我有一種感覺,它與JavaScript中使用.innerHeight函數的事實有關,但我不確定。
這裏是相關的javascript,我將在底部有一個鏈接到codepen。
$(document).ready(function() {
var navHeight = $('nav').innerHeight();
var componentEnd = [];
$('.component').each(function(){
componentEnd.push($(this).offset().top + $(this).innerHeight() - navHeight);
});
$(document).on('scroll', function() {
var pos = $(document).scrollTop();
for (var i = 0; i < componentEnd.length; i++) {
if (pos <= componentEnd[i]) {
var index = i;
break;
}
}
$('.navbar-nav li')
.removeClass('nav-active')
.eq(index)
.addClass('nav-active');
});
});
如果你們有什麼想法,我會很感激!我一直在這裏工作了一段時間。
您使用的是什麼操作系統和瀏覽器?我似乎無法在Chrome或Firefox中的OS X上覆制它。儘管在FF中,如果您一直滾動到底部,它將不會突出顯示聯繫人導航。你有沒有看過jQuery的outerHeight? http://api.jquery.com/outerheight/ – Pango
嘿,看起來不錯 - 我想如果你調整瀏覽器窗口的寬度(技術上是視口) - 響應能力改變了元素的高度 - 因爲你抓住內在的高度準備就緒不再準確。您可以捕獲窗口大小調整事件並重新評估內部高度。 – luckyape
@Pango你認爲這是一個跨瀏覽器兼容性的問題嗎? –