Ich habe Schwierigkeiten herauszufinden, wie man erkennt, wenn ein div mit fester Position anfängt und endet, um ein bestimmtes div beim Scrollen zu schweben.Erkennen, wenn ein div mit fester Position ein anderes Element kreuzt
Ich habe ein Div immer in Position fixiert und zentriert in meinem Fenster. Während ich meine Seite scrolle, möchte ich, dass das feste div, wenn es anfängt, einen anderen zu schweben, seine Farbe ändert und die Farbe löscht, sobald es aufhört zu schweben. Ich habe ein kleines Schema angehängt, um mein Problem zu veranschaulichen. Um fortzufahren:
Das feste div beim Laden der Seite hat eine schwarze Farbe -> Beginnt ein zweites div zu schweben, die Farbe wird weiß -> Fertig, um das zweite div zu schweben, ist die Farbe wieder schwarz.
fand ich dieses Problem: Detect when a position: fixed; element crosses over another element
Es funktioniert, wenn der div Beginn der zweiten zu überqueren, aber es nicht zurückgesetzt die Farbe, wenn der Hover beendet ist. Mein Code:
$(window).scroll(function() {
if ($('div.fixed').offset().top < ($(".div-to-cross").offset().top - 0)) {
$('div.fixed').removeClass('white');
} else {
$('div.fixed').addClass('white');
}
});
Vielen Dank im Voraus für Ihre Hilfe.
danken, es funktioniert wie ein Charme! Allerdings habe ich Seiten auf der Website, die nicht den Trick brauchen, um die Farbe zu wechseln, weil das feste div diesen Abschnitt nicht zu überqueren hat und es den Rest meines Javascript abstürzt. Weißt du, wie wir diesen Konflikt lösen können? –
Ich denke, ich habe die Lösung gefunden, ich schließe die ganze Funktion in eine IF-Anweisung ein: 'if ($ ('. Div-to-cross'). Länge) {Do some}' –
Ja ... Das ist der Weg . Sicher, wenn es keine 'div-to-cross'-Elemente gibt ... Das kann problematisch sein. Ihre IF-Anweisung sollte funktionieren. –