我在解決我試圖編寫的插件上的滾動問題時遇到了困難。我添加了一個截圖,我希望這可以幫助您更輕鬆地描述UI。 使用Javascript的頁面部分導航
兩件事情需要發生:
1)當用戶滾動到視圖中,該部分變爲「有效」,進而,相應的點得到「有效」,以及。向下滾動時,每個以前的點應保持活動狀態。當用戶向上滾動時,應將「主動」類從點上移除。我不知道如何解決這個問題?檢測滾動方向?下面是當前代碼的外觀:
var _activeSection = function() {
var setActive;
setActive = false;
for (var i = 0, len = sections.length; i < len; i++) {
// Last section, bottom of window
if (!setActive && elementInView(sections[i]) && (window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
sections[i].classList.add('active'); // Add 'active' class when Section is in view and reaches bottom of the viewport
} else if (!setActive && elementInView(sections[i])) {
sections[i].classList.add('active'); // Add 'active' class when Section is in view
setActive = true;
} else {
sections[i].classList.remove('active');
}
}
};
2)這是困難的部分:滾動進度元素(垂直豎線)。現在,我無法準確找到一種方法來準確計算每個增量。當前功能:
var _setScrollProgress = function() {
// How many sections are there?
var sectionCount = (sections.length -1);
// Metrics
var scrollProgress = (scrollTop/root.innerHeight) * 100/sectionCount + '%';// get amount scrolled (in %)
if (settings.position === 'left' || settings.position === 'right') {
highlight.style.height = scrollProgress;
}
};
任何想法和或代碼片斷都會很好。我開始用這件事把我的頭髮拉出來。
注意:純粹/香草Javascript解決方案只請,沒有jQuery。
是否使用滾動事件監聽器? https://developer.mozilla.org/en/docs/Web/Events/scroll – Danmoreng
是的,當然。我沒有在插件中包含所有的代碼。但是,絕對是。我正在使用滾動事件偵聽器和限制。 – nfq