CSS position: fünf Werte, eine Live-Demo

Leitfaden zu CSS position

CSS position: static, relative, absolute, fixed, sticky als Demo | We.Inc

Schalte ein Element in einer scrollenden Demo zwischen static, relative, absolute, fixed und sticky um. Containing Blocks, inset, Fehlersuche bei sticky und Zentrieren verständlich erklärt.

Die Eigenschaft position legt fest, wie ein Element platziert wird. static ist der normale Fluss. relative verschiebt es leicht und behält seinen Platz. absolute nimmt es aus dem Fluss und platziert es relativ zum nächsten positionierten Vorfahren. fixed heftet es an den Viewport. sticky scrollt normal, bis es einen Schwellenwert wie top: 0 erreicht, und bleibt dann dort stehen.

Die fünf Werte

Die Demo unten enthält eine orange Box in einem scrollbaren Bereich. Wechsle ihren position-Wert, verschiebe die Offsets, scrolle und beobachte, wovon aus sie gemessen wird. Danach folgen ein Leitfaden zu Containing Blocks, eine Checkliste für sticky, das nicht kleben will, und die Kurzschreibweise inset.

Häufige Fragen

Was ist der Unterschied zwischen absolute und relative?

relative verschiebt ein Element optisch, lässt aber seinen ursprünglichen Platz im Layout bestehen, sodass sich nichts drumherum bewegt. absolute nimmt das Element komplett aus dem Layout, Nachbarn schließen die Lücke, und top oder left werden vom nächsten positionierten Vorfahren aus gemessen statt von der Stelle, an der es gewesen wäre.

Warum funktioniert position: sticky nicht?

Die üblichen Ursachen sind ein fehlender top-Wert, ein Vorfahre mit overflow hidden oder auto oder ein Elternelement, das nicht höher ist als das sticky-Element. Arbeite die Checkliste auf dieser Seite der Reihe nach ab; die ersten beiden Punkte erfassen die meisten Fälle.

Woran orientiert sich absolute?

An seinem Containing Block: der Padding-Box des nächsten Vorfahren, dessen position etwas anderes als static ist. Vorfahren mit transform, filter oder bestimmten contain-Werten zählen ebenfalls. Gibt es keinen, ist es der initiale Containing Block, der die Größe des Viewports hat.

Warum bewegt sich mein fixierter Header mit der Seite?

Ein Vorfahre hat transform, perspective, filter, backdrop-filter, will-change: transform oder contain: paint. Jede dieser Eigenschaften macht diesen Vorfahren zum Containing Block für fixed-Nachkommen, sodass der Header an ihm fixiert ist statt am Bildschirm.

Was ist inset in CSS?

Eine Kurzschreibweise für top, right, bottom und left, die demselben Muster mit einem bis vier Werten folgt wie margin. inset: 0 spannt ein positioniertes Element über seinen ganzen Containing Block. inset-inline und inset-block setzen die Paare für jede Achse.

Der Containing Block, einfach erklärt

Zentrieren mit absoluter Positionierung

Jeder Wert im Detail

position-Werte

Was einen Containing Block für absolute und fixed erzeugt

Vorfahren, die positionierte Nachkommen einfangen (laut MDN)

Muster, die du brauchen wirst

Badge an der Ecke einer Karte

Die Karte ist der positionierte Vorfahre. Negative Offsets schieben das Badge zur Hälfte über die Ecke hinaus.

Sticky Tabellenkopf

Der Wrapper scrollt, daher klebt th mit top: 0 an ihm. Der Hintergrund verhindert, dass Zeilen durchscheinen.

Kurzschreibweise inset

Dasselbe Muster wie bei margin: ein Wert für alle Seiten, zwei für vertikal und horizontal, vier im Uhrzeigersinn ab oben.

Position-Playground

position-Wert

Elternelement hat position: relative

Offsets werden ignoriert. Die Box sitzt im normalen Fluss zwischen den Absätzen.

Die Box wird verschoben gezeichnet, aber die Lücke, wo sie wäre, bleibt erhalten. Nachbarn bewegen sich nicht.

Gemessen vom gestrichelten Elternelement, das position: relative hat.

Kein positioniertes Elternelement, daher wird vom scrollenden Demo-Bereich aus gemessen, dem nächsten positionierten Vorfahren darüber.

Beim Scrollen am Demo-Rahmen fixiert. Der Rahmen hat ein transform, das ihn statt des Browserfensters zum Containing Block macht.

Scrollt mit dem Text, bis es top Pixel vom oberen Rand des Scrollers entfernt ist, und hält dann, bis sein Elternelement wegscrollt.

Scrollbarer Demo-Bereich

Scrolle in diesem Rahmen. Der Text ist Fülltext, damit es etwas zum Vorbeiscrollen gibt.

Elternelement

Erster Absatz vor der Box.

Absatz nach der Box. Achte darauf, ob er nach oben rückt, wenn die Box den Fluss verlässt.

Zeile {n} mit zusätzlichem Inhalt zum Scrollen.

Inhalt nach dem Elternelement, Zeile {n}.

CSS kopieren

Warum fixed im Rahmen bleibt: Der Rahmen hat transform: translateZ(0). Jedes transform macht ein Element zum Containing Block für fixed-Nachkommen. Auf einer echten Seite ohne einen solchen Vorfahren hängt fixed am Browserfenster.

Sticky funktioniert nicht: Checkliste

Sticky Header hinter anderem Inhalt versteckt? Siehe

z-index und Stacking Contexts

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap