position-area CSS property
Baseline 2026>
Neu verfügbar
Seit Januar 2026 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Want more browser support for this feature? Tell us why.
Die CSS-Eigenschaft position-area ermöglicht es, ein per Anker positioniertes Element relativ zu den Kanten seines zugehörigen Ankerelements zu positionieren, indem das positionierte Element auf einer oder mehreren Kacheln eines impliziten 3x3-Rasters platziert wird, dessen mittlere Zelle das Ankerelement ist.
position-area bietet eine praktische Alternative zum Anheften und Positionieren eines Elements relativ zu seinem Anker über Inset-Eigenschaften und die Funktion anchor(). Das rasterbasierte Konzept löst den häufigen Anwendungsfall, die Kanten des Containing Blocks des positionierten Elements relativ zu den Kanten seines Standardankerelements zu positionieren.
Wenn ein Element kein Standardankerelement hat oder kein absolut positioniertes Element ist, hat diese Eigenschaft keine Wirkung.
Hinweis:
Diese Eigenschaft hieß ursprünglich inset-area und wurde unter diesem Namen in Chromium-Browsern unterstützt; die Eigenschaftswerte sind identisch. Beide Eigenschaftsnamen werden aus Gründen der Abwärtskompatibilität noch für kurze Zeit unterstützt.
Syntax
/* Default value */
position-area: none;
/* Two <position-area> keywords defining a single specific tile */
position-area: top left;
position-area: start end;
position-area: block-start center;
position-area: inline-start block-end;
position-area: x-start y-end;
position-area: center self-y-end;
/* Two <position-area> keywords spanning two tiles */
position-area: top span-left;
position-area: center span-start;
position-area: inline-start span-block-end;
position-area: y-start span-x-end;
/* Two <position-area> keywords spanning three tiles */
position-area: top span-all;
position-area: block-end span-all;
position-area: self-x-start span-all;
/* One <position-area> keyword with an implicit second <position-area> keyword */
position-area: top; /* equiv: top span-all */
position-area: inline-start; /* equiv: inline-start span-all */
position-area: center; /* equiv: center center */
position-area: span-all; /* equiv: span-all span-all */
position-area: end; /* equiv: end end */
/* Global values */
position-area: inherit;
position-area: initial;
position-area: revert;
position-area: revert-layer;
position-area: unset;
Werte
Der Eigenschaftswert besteht aus zwei <position-area>-Schlüsselbegriffen oder dem Schlüsselwort none. Wenn nur ein <position-area>-Schlüsselbegriff angegeben wird, wird der zweite Schlüsselbegriff impliziert.
<position-area>-
Gibt den Bereich des Positionierungsbereichsrasters an, auf dem ausgewählte positionierte Elemente platziert werden.
none-
Es wird kein Positionierungsbereich festgelegt.
Beschreibung
Die Eigenschaft position-area stellt eine Alternative zur Funktion anchor() für die Positionierung von Elementen relativ zu Ankern bereit. position-area basiert auf einem 3x3-Raster aus Kacheln, dem sogenannten Positionierungsbereichsraster, wobei das Ankerelement die mittlere Kachel bildet:
Die Rasterkacheln sind in Zeilen und Spalten unterteilt:
- Die drei Zeilen werden durch die physischen Werte
top,centerundbottomdargestellt. Sie haben außerdem logische Entsprechungen wieblock-start,centerundblock-endsowie Koordinatenentsprechungen —y-start,centerundy-end. - Die drei Spalten werden durch die physischen Werte
left,centerundrightdargestellt. Sie haben außerdem logische Entsprechungen wieinline-start,centerundinline-endsowie Koordinatenentsprechungen —x-start,centerundx-end.
Die Abmessungen der mittleren Kachel werden durch den Containing Block des Ankerelements definiert, während die Abmessungen der Außenkante des Rasters durch den Containing Block des positionierten Elements definiert werden.
Der Wert <position-area> besteht aus einem oder zwei Schlüsselwörtern, die den Bereich des Rasters festlegen, in dem das positionierte Element platziert werden soll. Genauer gesagt wird der Containing Block des positionierten Elements auf den Rasterbereich festgelegt.
Zum Beispiel:
- Sie können einen Zeilenwert und einen Spaltenwert angeben, um das positionierte Element in einem einzelnen, bestimmten Rasterfeld zu platzieren — beispielsweise platzieren
top left(logische Entsprechungstart start) oderbottom center(logische Entsprechungend center) das positionierte Element im oberen rechten beziehungsweise im unteren mittleren Feld. - Sie können einen Zeilen- oder Spaltenwert zusammen mit einem
span-*-Wert angeben, um zwei oder drei Zellen zu überspannen. Der erste Wert gibt die Zeile oder Spalte an, in der das positionierte Element platziert wird, wodurch es zunächst in der Mitte platziert wird, und der andere gibt die weiteren Kacheln dieser Zeile oder Spalte an, die überspannt werden sollen. Zum Beispiel:top span-leftbewirkt, dass das positionierte Element in der Mitte der oberen Zeile platziert wird und die mittlere sowie die linke Kachel dieser Zeile überspannt.block-end span-inline-endbewirkt, dass das positionierte Element in der Mitte der Zeile am Blockende platziert wird und die mittlere sowie die Kachel am Inline-Ende dieser Zeile überspannt.bottom span-allundy-end span-allbewirken, dass das positionierte Element in der Mitte der unteren Zeile platziert wird und drei Zellen überspannt, in diesem Fall die linken, mittleren und rechten Kacheln der unteren Zeile.
Detaillierte Informationen zu Ankerfunktionen, ihrer Verwendung und der Eigenschaft position-area finden Sie im Modul CSS-Ankerpositionierung sowie im Leitfaden CSS-Ankerpositionierung verwenden, insbesondere im Abschnitt zum Festlegen einer position-area.
Angepasstes Standardverhalten
Wenn ein <position-area>-Wert für ein positioniertes Element festgelegt wird, wird das Standardverhalten einiger seiner Eigenschaften angepasst, um eine passende Standardausrichtung bereitzustellen.
Wert normal der Selbstausrichtungseigenschaften
Der Wert normal der Selbstausrichtungseigenschaften, einschließlich align-items, align-self, justify-items und justify-self, verhält sich entweder als start, end oder anchor-center. Der Standardwert einer Selbstausrichtungseigenschaft hängt von der Positionierung des Elements ab:
- Wenn der Wert
position-areain einer Achse den mittleren Bereich angibt, ist die Standardausrichtung auf dieser Achseanchor-center. - Andernfalls ist das Verhalten dem durch die Eigenschaft
position-areaangegebenen Bereich entgegengesetzt. Wenn der Wertposition-areabeispielsweise den Startbereich seiner Achse angibt, ist die Standardausrichtung auf dieser Achseend.
Wenn beispielsweise writing-mode auf horizontal-tb gesetzt ist, bewirkt position-area: top span-x-start, dass das positionierte Element in der Mitte der oberen Zeile platziert wird und die mittlere sowie die Startkacheln dieser Zeile überspannt. In diesem Fall haben die Selbstausrichtungseigenschaften standardmäßig die Werte align-self: end und justify-self: anchor-center.
Inset-Eigenschaften und -Werte
Wenn ein per Anker positioniertes Element mit der Eigenschaft position-area positioniert wird, geben alle festgelegten Inset-Eigenschaften, etwa top oder inset-inline-end, Versätze vom Positionierungsbereich an. Einige andere Eigenschaftswerte, wie max-block-size: 100%, beziehen sich ebenfalls auf den Positionierungsbereich. Alle Inset-Eigenschaften, die auf auto gesetzt sind oder standardmäßig auto verwenden, verhalten sich so, als wäre ihr Wert auf 0 gesetzt.
Hinweis zur Breite positionierter Elemente
Wenn für das positionierte Element keine bestimmte Größe festgelegt ist, entspricht seine Größe standardmäßig seiner intrinsischen Größe, wird jedoch auch durch die Größe des Positionierungsbereichsrasters beeinflusst.
Wenn das positionierte Element in einer einzelnen Zelle oben-mittig, unten-mittig oder mittig-mittig platziert wird, entspricht seine Blockgröße der Größe des Containing Blocks des Ankers und wächst jeweils nach oben, nach unten oder in beide Richtungen. Das positionierte Element wird am angegebenen Rasterfeld ausgerichtet, übernimmt jedoch dieselbe Breite wie das Ankerelement. Sein Inhalt darf jedoch nicht überlaufen — seine minimale width entspricht seinem min-content (definiert durch die Breite seines längsten Wortes).
Wenn das positionierte Element in einem anderen einzelnen Rasterfeld platziert wird, etwa mit position-area: top left, oder so eingestellt wird, dass es zwei oder mehr Rasterfelder überspannt, beispielsweise mit position-area: bottom span-all, wird es am angegebenen Rasterbereich ausgerichtet, verhält sich aber so, als wäre für es eine width von max-content gesetzt. Seine Größe richtet sich nach der Größe seines Containing Blocks, also der Größe, die ihm bei position: fixed zugewiesen worden wäre. Es wird so breit wie der Textinhalt, kann jedoch auch durch die Kante von <body> eingeschränkt werden.
Verwendung von position-area zum Positionieren von Popovers
Beachten Sie bei der Verwendung von position-area zum Positionieren von Popovers, dass die Standardstile für Popovers möglicherweise mit der gewünschten Positionierung kollidieren. Die üblichen Ursachen sind die Standardstile für margin und inset; daher empfiehlt es sich, diese zurückzusetzen:
.my-popover {
margin: 0;
inset: auto;
}
Die CSS-Arbeitsgruppe prüft Möglichkeiten, um diesen Workaround überflüssig zu machen.
Formale Definition
| Anfangswert | none |
|---|---|
| Anwendbar auf | Positioned elements with a default anchor element |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
position-area =
none |
<position-area>
<position-area> =
[ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | self-x-start | self-x-end | span-self-x-start | span-self-x-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | self-y-start | self-y-end | span-self-y-start | span-self-y-end | span-all ] |
[ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] |
[ self-block-start | center | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | center | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] |
[ start | center | end | span-start | span-end | span-all ]{1,2} |
[ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2}
Beispiele
>Grundlegendes Beispiel
In diesem Beispiel wird ein positioniertes Element mithilfe der Eigenschaft position-area relativ zu seinem zugehörigen Anker angeheftet und positioniert.
HTML
Das HTML enthält ein <div> und ein <p>. Das <p> wird mit CSS relativ zum <div> positioniert. Außerdem fügen wir einen Stilblock ein, der sichtbar gemacht wird. Alle Elemente werden über das Attribut contenteditable direkt bearbeitbar gemacht.
<div class="anchor" contenteditable="true">⚓︎</div>
<p class="positionedElement" contenteditable="true">This can be edited.</p>
<style contenteditable="true">.positionedElement {
position-area: top center;
}
</style>
CSS
Wir wandeln das <div> mit der Eigenschaft anchor-name in ein Ankerelement um. Anschließend verknüpfen wir das absolut positionierte <p> damit, indem wir seinen Wert für position-anchor auf denselben Ankernamen setzen.
Wir setzen den anfänglichen Wert von position-area auf top center. Dieser Wert wird für einen p-Selektor festgelegt und hat daher eine geringere Spezifität als jeder Wert, der dem .positionedElement-Klassenselektor des <style>-Blocks hinzugefügt wird. Daher können Sie den anfänglichen Wert von position-area überschreiben, indem Sie innerhalb des Stilblocks einen position-area-Wert festlegen.
.anchor {
anchor-name: --infobox;
background: palegoldenrod;
font-size: 3em;
width: fit-content;
border: 1px solid goldenrod;
margin: 100px auto;
}
p {
position: absolute;
position-anchor: --infobox;
position-area: top center;
margin: 0;
background-color: darkkhaki;
border: 1px solid darkolivegreen;
}
style {
display: block;
white-space: pre;
font-family: monospace;
background-color: #ededed;
-webkit-user-modify: read-write-plaintext-only;
line-height: 1.5;
padding: 10px;
}
Ergebnisse
Versuchen Sie, die Textmenge im per Anker positionierten Element zu ändern, um zu sehen, wie es wächst. Versuchen Sie außerdem, den Wert der Eigenschaft position-area in einen anderen Wert wie center zu ändern.
Vergleich von position-area-Werten
Diese Demo erstellt einen Anker und heftet ein positioniertes Element daran an. Außerdem stellt sie ein Dropdown-Menü bereit, mit dem Sie verschiedene position-area-Werte auswählen und auf das positionierte Element anwenden können, um deren Wirkung zu sehen. Eine der Optionen lässt ein Textfeld erscheinen, in das Sie einen benutzerdefinierten Wert eingeben können. Schließlich gibt es ein Kontrollkästchen, mit dem Sie writing-mode: vertical-lr ein- und ausschalten können, sodass Sie beobachten können, wie sich die Auswirkungen der position-area-Werte zwischen verschiedenen Schreibmodi unterscheiden.
HTML
Im HTML geben wir zwei <div>-Elemente an, eines mit der Klasse anchor und eines mit der Klasse infobox. Diese sind jeweils als Ankerelement und als damit zu verknüpfendes positioniertes Element vorgesehen. Beide enthalten das Attribut contenteditable, wodurch sie direkt bearbeitbar sind.
Außerdem haben wir zwei Formulare eingefügt, die die Elemente <select> und <input type="text"> zum Festlegen verschiedener position-area-Werte sowie das Element <input type="checkbox"> zum Ein- und Ausschalten des vertikalen writing-mode enthalten. Der Code dafür sowie das JavaScript wurden der Kürze halber ausgeblendet.
<div class="anchor" contenteditable>⚓︎</div>
<div class="infobox">
<p contenteditable>You can edit this text.</p>
</div>
CSS
Im CSS deklarieren wir zunächst das <div> anchor als Ankerelement, indem wir ihm über die Eigenschaft anchor-name einen Ankernamen zuweisen.
Das positionierte Element wird mit dem Ankerelement verknüpft, indem dessen Ankername als Wert der Eigenschaft position-anchor des positionierten Elements festgelegt wird. Außerdem geben wir ihm mit position-area: top left eine anfängliche Position; diese wird überschrieben, wenn neue Werte im <select>-Menü ausgewählt werden. Schließlich setzen wir seine opacity auf 0.8, sodass Sie die Position der Elemente relativ zueinander weiterhin sehen können, wenn dem positionierten Element ein position-area-Wert zugewiesen wird, der es über dem Anker platziert.
.anchor {
anchor-name: --my-anchor;
}
.infobox {
position-anchor: --my-anchor;
position: fixed;
opacity: 0.8;
position-area: top left;
}
Ergebnis
Das Ergebnis sieht wie folgt aus:
Wählen Sie im <select>-Menü neue position-area-Werte aus, um zu sehen, wie sie sich auf die Position der Infobox auswirken. Wählen Sie den Wert „Custom“ aus und versuchen Sie, einige benutzerdefinierte position-area-Werte in die Texteingabe einzugeben, um deren Wirkung zu sehen. Fügen Sie Text zum Anker und zu den per Anker positionierten Elementen hinzu, um zu sehen, wie das per Anker positionierte Element anhand des position-area-Werts wächst. Aktivieren Sie schließlich das Kontrollkästchen und experimentieren Sie dann mit unterschiedlichen position-area-Werten, um zu sehen, welche in verschiedenen Schreibmodi dasselbe Ergebnis liefern und welche unterschiedliche Ergebnisse liefern.
Spezifikationen
| Spezifikation |
|---|
| CSS Anchor Positioning Module Level 1> # position-area> |
Browser-Kompatibilität
Siehe auch
anchor-nameposition-anchorposition-try-fallbacks- Die Funktion
anchor() - Der Wert
<position-area> - Leitfaden CSS-Ankerpositionierung verwenden
- Leitfaden Fallback-Optionen und bedingtes Ausblenden bei Überlauf
- Modul CSS-Ankerpositionierung