Sticky navbar mit Header?

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

Woher ich das weiß:Studium / Ausbildung

korbi27  03.10.2019, 09:40

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.

0
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.


Niklas  01.10.2019, 13:36

Das Problem ist, dass die Navbar dann dauerhaft angeheftet ist und den Header überlagert.

0

Einfach mit position: sticky; im CSS File

:)

Woher ich das weiß:Hobby