2016-04-25 9 views
1

Der folgende Code erstellt einen sticky-Header, der angezeigt wird, sobald Sie 100px herunterscrollen. Wie kann ich den Sticky-Header ausschalten, wenn ich einen unteren Teil der Seite erreiche? Sagen wir 800px?Wie man einen sticky header schaltet?

Danke!

$(window).scroll(function() { 
if ($(this).scrollTop() > 100){ 
    $('header').addClass("sticky"); 
    } 

    else{ 
    $('header').removeClass("sticky"); 
    } 
}) 

Antwort

4

Meinst du das?

$(window).scroll(function() { 
    if ($(this).scrollTop() > 100 && $(this).scrollTop() < 800) { 
     $('header').addClass("sticky"); 
    } else{ 
     $('header').removeClass("sticky"); 
    } 
}) 
+0

Ich cache '$ (this) .scrollTop()' in einer Variablen für die Benutzerfreundlichkeit. –

+0

Das ist perfekt! Vielen Dank! – AndrewLeonardi

2

Sie könnten eine weitere Bedingung für hinzufügen, wenn sie die Seite zu 800px bekommt:

$(window).scroll(function() { 
    if (($(this).scrollTop() > 100) && ($(this).scrollTop() < 800)){ 
     $('header').addClass("sticky"); 
    } 
    else{ 
     $('header').removeClass("sticky"); 
    } 
}); 

In meinem Beispiel:

  • $(this).scrollTop() ist die Variable die Spitze der Ansicht, die
  • Der erste Teil der if statement fügt die Bedingung für die Addition 100px
  • hinzu
  • Der zweite Teil der if statement fügt die Bedingung für die 800px Entfernung
+0

Ich verurteile diese Antwort, weil es ein Duplikat von Gerfrieds ist. –

+0

@TiagoMarinho Diese Antwort enthält eine Erklärung der Teile und wir beantworteten die Frage nahezu zur gleichen Zeit. –

+0

Ich stimme nicht zu. Nach dem, was ich gesehen habe, hast du zuerst eine andere Lösung (die ineffizient war) beantwortet und sie dann bearbeitet, um Gerfrieds Antwort zu entsprechen. Wie auch immer, mein Kommentar wurde gepostet, bevor du eine Erklärung hinzugefügt hast, also entferne ich meinen Downvote. –

0

ich nur vorschlagen würde, CSS zu verwenden. Wenn das Navy stickig ist, sollte es nicht ständig sticky bleiben und dann dem Hauptinhaltshalter einen Rand hinzufügen, um Platz für das Nav zu schaffen. Zum Beispiel: wenn das nav ist 108px hoch auf dem Desktop-Einsatz:

.main-content-holder{ 
    position:relative; 
    display:block; 
    margin-top:108px 
} 

dann höhenverstellbar und/oder Position mit Medienanfragen.

+0

Dies ist möglicherweise nicht immer der Fall, da die Benutzeroberfläche möglicherweise anders ist, wenn Sie 100px herunterscrollen. Ich glaube, dass der YouTube-Videomanager auf diese Weise funktioniert hat: Die Symbolleiste wurde klebrig, sobald der Benutzer an einem bestimmten Punkt gescrollt hat. –

Verwandte Themen