Ich habe Schwierigkeiten, ein Bildlaufproblem auf einem Plugin zu lösen, das ich versuche zu schreiben. Ich füge einen Screenshot hinzu, von dem ich hoffe, dass er die Benutzeroberfläche leichter beschreibt. Seitenteil Navigation mit Javascript
Zwei Dinge müssen passieren:
1) Wenn der Benutzer blättert in Sicht, der Abschnitt ‚aktiv‘ und wiederum wird, die ‚aktiv‘ sowie der entsprechende Punkt bekommt. Jeder vorherige Punkt sollte beim Scrollen aktiv bleiben. Wenn der Benutzer nach oben scrollt, sollte die 'aktive' Klasse von den Punkten entfernt werden. Ich bin mir nicht sicher, wie ich das lösen soll? Scrollrichtung erkennen? So sieht der aktuelle Code aus:
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) Dies ist der schwierige Teil: Das Scroll-Fortschrittselement (der Think-Vertical-Bar). Im Moment kann ich keinen genauen Weg finden, um jedes Inkrement genau zu berechnen. Aktuelle Funktion:
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;
}
};
Alle Ideen und oder Code-Schnipsel wären großartig. Ich fange an, meine Haare mit diesem Ding auszuziehen.
Hinweis: Pure/Vanilla Javascript-Lösungen nur bitte, keine jQuery.
Sind Sie mit dem Scroll-Ereignis-Listener? https://developer.mozilla.org/en/docs/Web/Events/scroll – Danmoreng
Ja, natürlich. Ich habe nicht den gesamten Code im Plugin enthalten. Aber ja, absolut. Ich benutze auch den Listener und die Drosselung des Scroll-Ereignisses. – nfq