Sticky navbar mit Header?
Ich will eine Webseite programmieren (mit CSS, HTML und JavaScript) , bei der ganz oben die Navigation unter dem Header bzw Logo ist. Aber wenn man runterscrollt, soll die navbar oben fest sein. Falls ihr versteht, was ich meine :D
Habe schon die Navbar, den Header, also die ganze Webseite gebaut.
Über Tipps und Hilfe würde ich mich freuen.
6 Antworten
Dazu gibt es beim css-Attribute "position" den Wert "sticky".
https://wiki.selfhtml.org/wiki/CSS/Eigenschaften/Positionierung/position#position:_sticky
Evtl. muss man noch ein Workaround einbauen, falls die Option nicht unterstützt wird, indem man beispielsweise zwei Elemente hat, eines fixed und eines im Textflow, wobei das fixed erst dann sichtbar wird, wenn das Textflowelement den Viewport verlässt.
Hallo CorasQuestions,
das kannst du relativ einfach mit der CSS-Eigenschaft position: sticky erreichen.
Hier ein Live-Beispiel von mir: https://jsfiddle.net/d1ym26qz/
nav {
position: sticky;
top: 0;
}
Zwei Dinge solltest du noch beachten:
- Damit der Effekt im Firefox funktioniert, musst du zusätzlich noch die Eigenschaft top: 0 setzen. Dieser Hinweis basiert auf einer Lösung die ich auf Stackoverflow fand.
- Damit der Effekt im Safari funktioniert, musst du zusätzlich position: -webkit-sticky setzen.
Viel Spaß beim Ausprobieren!
LG Savix
Ist die absolute Angabe von Top nicht sogar ein Pflichtattribut? Stellt man Top Beispielsweise auf 10px, ist die mit sticky fixierte Navbar dann beim Scrollen 10px von oben entfernt... Kann aber auch sein, dass ich mich täusche.
Aber wenn man runterscrollt, soll die navbar oben fest sein
Das geht so:
<!doctype html>
<title>position: sticky</title>
<style>
body
{
padding:2em 0 0 0;
margin:0
}
nav
{
position:sticky;
top:0;
height:2em;
line-height:2em;
background:#ccc;
width:100vW
}
</style>
<header>Hier der Header</header>
<nav>Navigation</nav>
Alex
Probier mal in CSS position:fixed aus.
Das Problem ist, dass die Navbar dann dauerhaft angeheftet ist und den Header überlagert.
Einfach mit position: sticky; im CSS File
:)