versucht zu verstehen Eigenart in intersectionObserver API.intersectionObserver Rückruf außerhalb Schwellenwert
Wenn ein beobachtetes Element teilweise auf dem Bildschirm ist, aber noch nicht die Schwelle definiert in den Optionen erfüllt würde ich den Anruf erwarten, wieder Feuer nicht, aber es tut. Versuchen zu verstehen, warum oder wie man es beim Laden der Seite verhindert.
function handleIntersect(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Should only fire at >= 0.8
console.log(entry, entry.intersectionRatio);
entry.target.classList.add('play');
}
});
}
function createObserver(element) {
let observer;
const options = {
threshold: [0.8]
};
observer = new IntersectionObserver(handleIntersect, options);
observer.observe(element);
}
const waypoints = document.querySelectorAll('.section');
waypoints.forEach(waypoint => {
createObserver(waypoint);
});
Reduzierte Testfall: https://codepen.io/WithAnEs/pen/gxZPMK
Beachten Sie, wie die ersten zwei Abschnitte in sogar animiert werden, obwohl der zweite Abschnitt nicht erfüllt die 0,8-Schwellenwert (Konsolenprotokoll). Die erste Neigung besteht darin, eine intersectionRatio > 0.8
Prüfung hinzuzufügen, aber dies ist eine doppelte Anstrengung. Außerdem ist die Verhältnisangabe verzögert, so dass sie ungenau genug sein könnte, um diese Prüfung nicht zu bestehen.
Nein, ich verstehe die IsIntersecting-Eigenschaft. Ich habe die isIntersecting-Prüfung hinzugefügt, um zu verhindern, dass jede Instanz des Schnittpunkt-Beobachters die Startseitenladung auslöst. Das Problem, das ich habe, verhindert, dass die anfängliche Seitenladung für Elemente ausgelöst wird, die außerhalb des vordefinierten Schwellenwerts liegen. Ich könnte eine Kontrolle für Prozentsatz sichtbar hinzufügen, aber das scheint merkwürdig in Anbetracht der Schwelle definiert ist. – WithAnEs
Die Antwort wurde aktualisiert – dizel3d