DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die Eigenschaft position kann Ihnen helfen, die Position eines Elements zu manipulieren, zum Beispiel
.element {
position: relative;
top: 20px;
}
Relativ zu seiner ursprünglichen Position wird das obige Element nun um 20 Pixel von oben nach unten verschoben. Wenn wir diese Eigenschaften animieren würden, könnten wir sehen, wie viel Kontrolle uns das gibt (obwohl dies aus Leistungsgründen keine gute Idee ist)
relative ist nur einer von sechs Werten für die Eigenschaft position. Hier sind die anderen
Werte
static: Jedes Element hat standardmäßig eine statische Position, sodass das Element dem normalen Seitenfluss folgt. Wenn also ein left/right/top/bottom/z-index gesetzt ist, hat dies keine Auswirkung auf dieses Element.relative: Die ursprüngliche Position eines Elements bleibt im Dokumentfluss, genau wie derstatic-Wert. Aber jetzt funktionieren left/right/top/bottom/z-index. Die Positions-Eigenschaften "stoßen" das Element von der ursprünglichen Position in diese Richtung.absolute: Das Element wird aus dem Dokumentfluss entfernt und andere Elemente verhalten sich so, als wäre es nicht vorhanden, während alle anderen Positions-Eigenschaften auf es angewendet werden.fixed: Das Element wird aus dem Dokumentfluss entfernt, wie absolut positionierte Elemente. Tatsächlich verhalten sie sich fast gleich, nur fest positionierte Elemente sind immer relativ zum Dokument, nicht zu einem bestimmten Elternteil, und werden vom Scrollen nicht beeinflusst.sticky: Das Element wird wie einrelative-Wert behandelt, bis die Scroll-Position des Viewports einen bestimmten Schwellenwert erreicht, an dem das Element einefixed-Position einnimmt, wo es "kleben" soll.inherit: Derposition-Wert wird nicht vererbt, daher kann dies verwendet werden, um ihn explizit zu erzwingen und den Positionierungswert vom übergeordneten Element zu übernehmen.
Absolut
Wenn ein Kindelement den Wert absolute hat, verhält sich das Eltern-Element so, als ob das Kind gar nicht da wäre.
.element {
position: absolute;
}
Und wenn wir versuchen, andere Werte wie left, bottom und right zu setzen, stellen wir fest, dass das Kindelement nicht auf die Abmessungen seines Elternteils, sondern auf die des Dokuments reagiert.
.element {
position: absolute;
left: 0;
right: 0;
bottom: 0;
}
Damit das Kindelement absolut vom Elternteil positioniert wird, müssen wir dies auf dem Elternteil selbst einstellen.
.parent {
position: relative;
}
Nun beziehen sich Eigenschaften wie left, right, bottom und top auf das Elternteil, sodass, wenn wir das Kindelement transparent machen, wir es direkt am unteren Rand des Elternteils sitzen sehen können.
Erfahren Sie mehr über position: relative und position: absolute bei DigitalOcean.
Fest
Der Wert fixed ähnelt absolute, da er Ihnen helfen kann, ein Element beliebig relativ zum Dokument zu positionieren. Dieser Wert wird jedoch vom Scrollen nicht beeinflusst. Sehen Sie das Kindelement in der folgenden Demo und wie es nach dem Scrollen am unteren Rand der Seite klebt.
Diese Browser-Support-Daten stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl bedeutet, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 4 | 2 | 7 | 12 | 3.1 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 3 | 8 |
Haftend
Der Wert sticky ist wie ein Kompromiss zwischen den Werten relative und fixed. Zum Zeitpunkt der Erstellung dieses Textes ist dies noch ein experimenteller Wert, was bedeutet, dass er nicht Teil der offiziellen Spezifikation ist und nur teilweise von ausgewählten Browsern unterstützt wird. Mit anderen Worten, es ist wahrscheinlich keine gute Idee, dies auf einer Live-Produktionswebsite zu verwenden.
Was macht es? Nun, es ermöglicht Ihnen, ein Element relativ zu allem im Dokument zu positionieren und dann, sobald ein Benutzer einen bestimmten Punkt im Viewport überschritten hat, die Position des Elements an dieser Stelle zu fixieren, sodass es dauerhaft angezeigt wird wie ein Element mit einem fixed-Wert.
Nehmen Sie das folgende Beispiel
.element {
position: sticky; top: 50px;
}
Das Element wird relativ positioniert, bis die Scroll-Position des Viewports einen Punkt erreicht, an dem das Element 50px vom oberen Rand des Viewports entfernt ist. Zu diesem Zeitpunkt wird das Element "sticky" und behält eine fixed-Position 50px vom oberen Bildschirmrand.
Die folgende Demo veranschaulicht diesen Punkt, bei dem die obere Navigation standardmäßig relative positioniert ist und die zweite Navigation am oberen Rand des Viewports auf sticky eingestellt ist. Bitte beachten Sie, dass die Demo zum Zeitpunkt der Erstellung nur in Chrome, Safari und Opera funktioniert.
Diese Browser-Support-Daten stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl bedeutet, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 91 | 59 | Nein | 91 | 7.1* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 8* |
Erfahren Sie mehr über position: sticky bei DigitalOcean.
Sehr schön!
Gut, dass ich es bemerkt habe.
Als ich jünger war und gerade mit der Webentwicklung anfing, hätte ich diesen Leitfaden nutzen können, um die Unterschiede bei der Elementpositionierung klar darzustellen. Diese Seite ist großartig!
Sehr wahr. Ich fange gerade an und diese Website hat bisher Antworten auf alle meine Fragen und ich konnte sie auch klar verstehen. Juhu
Hallo Chris, deine Seite hat mir immer die beste Antwort gegeben, du bist gut vorbereitet. Bravo!
Sehr schöne Erklärung von CSS-Positionen. Vielen Dank.
Hey,
Ich habe
position:nicht zum ersten Mal verwendet, aber als ich es versuchte, funktionierte es nicht. Also habe ich gegoogelt, es gefunden und als ich diese Seite überflog, habe ichz-indexgelesen....... UND das hat mein Problem gelöst!
Vielen Dank!
Hier sind wir, 2015, und Leute suchen immer noch nach diesem Inhalt, weil viele Leute noch IE8 benutzen. Leider suche ich nach einer Möglichkeit, IE8 mit position:absolute zum Laufen zu bringen. Position:relative scheint mir nicht zu erlauben, top/bottom/left/right hinzuzufügen, um die Position von etwas zu beeinflussen. Na ja, die Suche geht weiter. Aber das sind großartige Informationen und sehr hilfreich. Danke!
in Chrome.
Beispiel Absolut
wenn Eltern display:flex gesetzt wird
Kind verhält sich unvorhersehbar
Also, wie setzt man das Kind stabil nach dem Text im Elternteil, wie im Beispiel, mit einem flexiblen Elternteil?
Danke für die Artikel! Ich habe diese Informationen verwendet, um einige Positionierungsprobleme einer Website zu beheben. Sie haben mir Zeit und Mühe erspart. :)
Ein Kritikpunkt: Sie haben hier und in einem anderen Artikel gesagt, dass die Positionseigenschaft „nicht kaskadiert“. Meinten Sie damit, dass sie nicht vererbt oder nicht vererbt wird? Kaskadieren und Vererbung sind nicht dasselbe. Ich bin ein wenig über die Idee einer nicht-kaskadierenden Eigenschaft gestolpert…
Sticky ist großartig! Gibt es Neuigkeiten darüber, ob dies dazu führen wird, dass
positionanimierbar wird? Es wäre schön, dem Sticky-Element visuelle Übergänge zu ermöglichen, sobald es von / zu fixed wechselt.Ein festes Element ist nicht immer relativ zum Dokument positioniert!
„Wenn ein Vorfahre die Eigenschaft transform, perspective oder filter auf etwas anderes als none gesetzt hat, wird dieser Vorfahre als Container anstelle des Viewports verwendet.“
Siehe: https://developer.mozilla.org/en-US/docs/Web/CSS/position
Danke für die Referenz!
Das ist interessant! Ich habe versucht, etwas Ähnliches zu erreichen: ein Element am unteren Rand eines scrollbaren Containers anzubringen. Allerdings scrollt das Element, das an einem "transformierten" Container befestigt ist, anders als ein Element, das am Browserfenster befestigt ist, mit dem Rest des Containerinhalts.
Gibt es tatsächlich eine Möglichkeit, eine echte feste Position relativ zu einem anderen HTML-Element zu haben?
Hallo, was meinst du mit Performance-Problem? Worum genau geht es? Kannst du dieses Thema speziell benennen? (Für weitere Recherchen)
Wow... sehr, sehr hilfreich. Ich kam hierher, um mein Wissen über Positionierung aufzufrischen, und wurde nicht enttäuscht. Prägnant, direkt auf den Punkt und gute Beispiele.
Ich liebe diese Idee: "Das Element wird aus dem Fluss entfernt". Das ergibt Sinn!
Wenn jemand interessiert ist, habe ich ein CSS-Position-Tester-Tool entwickelt, um Positionsänderungen sofort in einem Layout zu visualisieren. https://kilianso.com/css_position
Danke für das Tool, Kilian. Es ist sehr hilfreich für Leute wie mich, die gerade erst anfangen.
Der Wert "sticky" ist noch experimentell?
Nicht wirklich, es wird gut unterstützt
https://caniuse.com/css-sticky
Warum verliert ein absolut positioniertes Element 100% Breite?