2017-10-27 1 views
0

Ich bin relativ neu in js und kämpfe mit schwebenden Menü.Floating-Menü, wie Menü an der Spitze zu halten?

Dies ist, wie mein js Code aussehen

$(function(){ 
console.log('jest'); 
$(window).scroll(function(event){ 
    console.log($('#menu').offset().top, $(this).scrollTop()); 
    if ($('#menu').offset().top <= $(this).scrollTop()+$(window).height()) { 
       $('#menu').addClass("fixed"); 
     } else { 
      $('#menu').removeClass("fixed"); 
     } 
    }); 
}); 

Wenn die obere erreicht ist, wird fixed Klasse richtig hinzugefügt.

Meine Frage ist: Was soll ich in fixed Klasse tun, um das Menü an der Spitze zu bleiben?

+0

Es ist eine Position, "klebrig", dass dies ohne JS tut. – Keith

+0

@Keith es ändert nichts, wenn ich 'sticky' hinzugefügt habe, aber danke für deinen Hinweis –

+0

Sieh dir mein Schnipsel für ein funktionierendes Beispiel an, vergiss nicht 'top: 0' zu setzen, wenn 'sticky' verwendet wird. Schöne Sache mit Sticky, können Sie auch mehrere haben, und dort auch Teil des Dokumentenflusses, im Gegensatz zu festen. z.B. sagen Sie, Sie wollten einen Header, um oben zu bleiben, und wenn Sie unten einen anderen Header übernehmen, ist es sehr einfach zu tun. – Keith

Antwort

0

Nizza eine einfache "position: sticky" ..

brand { 
 
    display: block; 
 
    background-color: pink; 
 
    padding: 10px; 
 
    font-size: 20pt; 
 
} 
 

 
header { 
 
    background-color: yellow; 
 
    border: 2px solid black; 
 
    padding: 10px; 
 
    position: sticky; 
 
    top: 0; 
 
} 
 

 
section { 
 
    background-color: silver; 
 
    padding: 10px; 
 
} 
 

 
body { 
 
padding: 0; 
 
margin: 0; 
 
}
<brand> 
 
<div>This is our branding,. It can scroll away.</div> 
 
<small>for all your header needs,.. </small> 
 
</brand> 
 

 
<header> 
 
This is the header 
 
</header> 
 
<section> 
 
Our othe stuff can go in here.<br><br><br><br><br><br><br><br><br><br> 
 
Scroll down<br><br><br><br><br><br> 
 
Even further<br><br><br><br><br> 
 
A little bit more<br><br><br><br><br> 
 
Ok I'm bored now. 
 
</section> 
 

 
<header> 
 
This is repeated, see how the header takes over 
 
</header> 
 
<section> 
 
Our othe stuff can go in here.<br><br><br><br><br><br><br><br><br><br> 
 
Scroll down<br><br><br><br><br><br> 
 
Even further<br><br><br><br><br> 
 
A little bit more<br><br><br><br><br> 
 
Ok I'm bored now. 
 
</section>

+0

FYI: http://caniuse.com/#feat=css-sticky (ab sofort, in den neuesten Browsern verfügbar, nicht IE11) –

+1

@ freedomn-m Pollyfill's sind verfügbar, wenn IE11 und älter benötigt werden.Dieses funktioniert den ganzen Weg zurück zu IE9 -> https://github.com/wilddeer/stickyfill – Keith

0
.fixed{ 
    position: fixed; 
    top: 0; 
    right: 0; 
    left: 0; 
} 
+0

Dies ist nicht die beste Lösung, die ich denke, da es direkt nach dem Bildlauf hinzugefügt wird, und aus irgendeinem Grund wird die Klasse nicht entfernt, wenn wir nach oben scrollen :( –