Eine clevere Sticky-Footer-Technik

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wenn man heutzutage "sticky footer" hört, würde ich denken, die meisten Leute stellen sich eine position: sticky Situation vor, bei der ein Footer-Element im Scroll-Kontext eines übergeordneten Elements am Bildschirm fixiert bleibt.

Das ist nicht ganz, was ich hier meine. „Sticky Footers“ waren ein UI-Konzept, bevor position: sticky existierte, und sie bedeuten etwas leicht anderes. Die Idee ist, dass sie am unteren Bildschirmrand haften, auch wenn der Seiteninhalt nicht ausreicht, um sie dorthin zu schieben. Aber wenn genügend Inhalt vorhanden ist, werden sie fröhlich nach unten geschoben.

Wir haben uns in der Vergangenheit fünf Möglichkeiten angesehen, dies zu tun, darunter Techniken, die recht modern sind, wie calc(), Flexbox und CSS Grid.

Hier kommt ein sechster Herausforderer! Leser Sílvio Rosa schrieb Folgendes:

(Am einfachsten ist es wahrscheinlich auf einem mittelgroßen Desktop-Bildschirm zu überprüfen, da Sticky Footers dort sowieso am wichtigsten sind.)

Es ist so ziemlich nur das hier:

html, body { height: 100%;}

body > footer {
  position: sticky;
  top: 100vh;
}

Was ich daran mag, ist, dass es keine spezielle zusätzliche Wrapper für Nicht-Footer-Inhalte erfordert.

Es ist auch ein bisschen verblüffend. Wenn ich top: 100vh; sehe, denke ich: *Nun, das wird nicht funktionieren, weil es den Footer außerhalb des sichtbaren Bereichs schiebt.* Aber das ist der clevere Teil. Es wird das tun, unabhängig davon, wie groß der Footer ist (keine magischen Zahlen), und dann wird die Sticky-Positionierung ihn wieder nach oben "saugen", um am unteren Rand zu haften. Aber er wird niemals Inhalte überlappen, daher ist es in Ordnung, ihn unter den Inhalt zu schieben, was ein Kernprinzip des Sticky-Footer-Musters ist.