我在解决我试图编写的插件上的滚动问题时遇到了困难。我添加了一个截图,我希望这可以帮助您更轻松地描述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