Ich versuche, Aktionen auszulösen, wenn der Benutzer in verschiedene DOM-Elemente scrollt (ich brauche dies für verschiedene Bildschirmgrößen reagieren). Ich bekomme zuerst die Positionen der jeweiligen Elemente mit offset().top
dann berechne ich die Position der Rolle mit scrollTop()
. Es funktioniert etwas, aber die Aktion wird zu weit nach dem Start des DOM-Elements ausgelöst. Ich habe alle Polsterung und Margen entfernt ...Auslöser beim Scrollen nach DOM-Element
var hT = $('#bioAG').offset().top;
var hT2 = $('#bioTM').offset().top;
var hT3 = $('#contact').offset().top;
$(window).scroll(function() {
var ws = $(window).scrollTop()
if (ws > hT) {
$("#bioAG").addClass("fade-in");
} else if (ws > hT2){
$("#bioTM").addClass("fade-in");
} else if (ws > hT3) {
$("#contact").addClass("fade-in");
} else {console.log('none');};
}) `
logisch auf Spirale (jeder einmal in eine Weile) Sie Ihre Variablen neu berechnet werden sollte .... –
Ich glaube, ich verstehe mich zu kämpfen, warum das der Fall wäre, wenn das Ansichtsfenster nicht in der Größe geändert wird. Warum ändert sich die Position der DOM-Elemente, wenn sie bereits beim ersten Aufruf der Seite vorhanden sind? – eabates
Ursache: 1: Sie scrollen die Seite, 2: Sie ändern die Größe des Fensters, 3: scrollen und JS ist nun vermasselt (naja ... es sei denn, Ihre Elemente sind immer auf festen NNpx Höhe - was ich weniger wahrscheinlich. –