anchor-size() CSS-Funktion
Baseline
2026
*
Neu verfügbar
Seit January 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.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Die anchor-size() CSS Funktion ermöglicht es, die Größe, Position und Ränder eines ankerpositionierten Elements relativ zu den Dimensionen der Ankerelemente zu setzen. Sie gibt die <length> einer angegebenen Seite des Zielankerelements zurück. anchor-size() ist nur gültig, wenn es innerhalb des Werts von Größen-, Einzugs- und Rand-Eigenschaften von ankerpositionierten Elementen verwendet wird.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe das Modul CSS Anchor Positioning und den Anleitung zur Verwendung von CSS Anchor Positioning Leitfaden.
Syntax
/* without parameters */
anchor-size()
/* anchor size parameter */
anchor-size(width);
anchor-size(block);
anchor-size(self-inline);
/* anchor-name and anchor-side */
width: anchor-size(--my-anchor width);
block-size: anchor-size(--my-anchor block);
/* sizing relative to named anchor's side with fallback */
width: anchor-size(--my-anchor width, 50%);
block-size: anchor-size(--my-anchor block, 200px);
/* positioning relative to anchor side */
left: anchor-size(width);
inset-inline-end: anchor-size(--my-anchor height, 100px);
/* setting margin relative to anchor side */
margin-left: calc(anchor-size(width) / 4);
margin-block-start: anchor-size(--my-anchor self-block, 20px);
Parameter
Die Syntax der anchor-size() Funktion ist wie folgt:
anchor-size(<anchor-name> <anchor-size>, <length-percentage>)
Die Parameter sind:
<anchor-name>Optional-
Der Wert der
anchor-nameEigenschaft eines Ankerelements, zu dem die Größe, Position oder Ränder des Elements relativ festgelegt werden sollen. Dies ist ein<dashed-ident>Wert. Wenn weggelassen, wird der Standardanker des Elements verwendet.Hinweis: Das Angeben eines
<anchor-name>innerhalb eineranchor-size()Funktion stellt weder eine Verbindung noch eine Bindung eines Elements zu einem Anker her; es definiert nur, zu welchem Anker die Eigenschaftswerte des Elements relativ festgelegt werden sollen. <anchor-size>Optional-
Gibt die Dimension des Ankerelements an, zu der die Eigenschaftswerte des positionierten Elements relativ festgelegt werden. Gültige Werte sind:
width-
Die Breite des Ankerelements.
height-
Die Höhe des Ankerelements.
block-
Die Länge des Containing Block des Ankerelements in Blockrichtung.
inline-
Die Länge des Containing Block des Ankerelements in Inline-Richtung.
self-block-
Die Länge des Ankerelements in Blockrichtung.
self-inline-
Die Länge des Ankerelements in Inline-Richtung.
Hinweis: Wenn dieser Parameter weggelassen wird, ist die Dimension standardmäßig der
<anchor-size>Schlüsselbegriff, der zur Achse der Eigenschaft passt, in der die Funktion enthalten ist. Zum Beispiel istwidth: anchor-size();äquivalent zuwidth: anchor-size(width);. <length-percentage>Optional-
Gibt die Größe an, die als Fallback verwendet wird, falls das Element nicht absolut oder fest positioniert ist oder das Ankerelement nicht existiert. Wenn dieser Parameter in einem Fall weggelassen wird, in dem der Fallback sonst verwendet worden wäre, ist die Deklaration ungültig.
Hinweis:
Die Ankerdimension, zu der die Eigenschaftswerte des positionierten Elements relativ festgelegt werden, muss nicht entlang derselben Achse wie der festgelegte Größenwert liegen. Zum Beispiel ist width: anchor-size(height) gültig.
Rückgabewert
Gibt einen <length> Wert zurück.
Beschreibung
Die anchor-size() Funktion ermöglicht es, die Größen-, Positions- und Randwerte eines positionierten Elements in Bezug auf die Dimensionen eines Ankerelements auszudrücken; sie gibt einen <length> Wert zurück, der die Dimension eines spezifischen Ankerelements darstellt, zu der die Eigenschaftswerte des positionierten Elements relativ festgelegt werden. Sie ist ein gültiger Wert für Größen-, Einzugs- und Rand-Eigenschaften, die auf ankerpositionierten Elementen festgelegt werden.
Die zurückgegebene Länge ist die vertikale oder horizontale Größe eines Ankerelements oder seines Containing Block. Die verwendete Dimension wird durch den <anchor-size> Parameter definiert. Wenn dieser Parameter weggelassen wird, passt die verwendete Dimension zur Achse der Eigenschaft, auf die sie festgelegt ist. Zum Beispiel:
width: anchor-size()ist äquivalent zuwidth: anchor-size(width).top: anchor-size()ist äquivalent zutop: anchor-size(height).margin-inline-end: anchor-size()ist äquivalent zumargin-inline-end: anchor-size(self-inline).margin-inline-end: anchor-size()ist auch äquivalent zumargin-inline-end: anchor-size(width)in horizontalen Schreibrichtungen odermargin-inline-end: anchor-size(height)in vertikalen Schreibrichtungen.
Das Ankerelement, das als Grundlage für die Längendimension verwendet wird, ist das Element mit dem im <anchor-name> Parameter angegebenen anchor-name. Wenn mehr als ein Element denselben Ankernamen hat, wird das zuletzt im DOM-Order befindliche Element mit diesem Ankernamen verwendet.
Wenn kein <anchor-name> Parameter in der Funktionsaufruf enthalten ist, wird der Standardanker des Elements verwendet, auf den in seiner position-anchor Eigenschaft verwiesen wird oder der über das anchor HTML-Attribut mit dem Element verbunden ist.
Wenn ein <anchor-name> Parameter enthalten ist und es keine Elemente gibt, die mit diesem Ankernamen übereinstimmen, wird der Fallback-Wert verwendet. Wenn kein Fallback enthalten war, wird die Deklaration ignoriert. Zum Beispiel, wenn width: anchor-size(--foo width, 50px); height: anchor-size(--foo width); auf dem positionierten Element angegeben wurde, aber kein Anker mit dem Namen --foo im DOM existiert, würde die width 50px betragen und die height Deklaration hätte keine Wirkung.
Wenn ein Element Größen-, Positions- oder Rand-Eigenschaften mit anchor-size() Werten darauf eingestellt hat, aber kein ankerpositioniertes Element ist (sein position Eigenschaft ist nicht auf absolute oder fixed eingestellt oder es gibt keinen Anker, der über seine position-anchor Eigenschaft verknüpft ist), wird der Fallback-Wert verwendet, falls einer verfügbar ist. Wenn kein Fallback verfügbar ist, wird die Deklaration ignoriert.
Zum Beispiel, wenn width: anchor-size(width, 50px); auf dem positionierten Element angegeben wurde, aber kein Anker damit verbunden war, würde der Fallback-Wert verwendet werden, sodass width einen berechneten Wert von 50px erhalten würde.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe das Modul CSS Anchor Positioning und den Anleitung zur Verwendung von CSS Anchor Positioning Leitfaden.
Eigenschaften, die anchor-size() Funktionswerte akzeptieren
Die Eigenschaften, die eine anchor-size() Funktion als Wert akzeptieren, umfassen:
- Größen-Eigenschaften:
- Einsetz-Eigenschaften:
bottomleftrighttopinsetKurzforminset-blockKurzforminset-block-endinset-block-startinset-inlineKurzforminset-inline-endinset-inline-start
- Rand-Eigenschaften:
marginKurzformmargin-bottommargin-leftmargin-rightmargin-topmargin-blockKurzformmargin-block-endmargin-block-startmargin-inlineKurzformmargin-inline-endmargin-inline-start
Verwendung von anchor-size() innerhalb von calc()
Die am häufigsten verwendeten anchor-size() Funktionen beziehen sich nur auf eine Dimension des Standardankers. Alternativ können Sie die anchor-size() Funktion innerhalb einer calc() Funktion verwenden, um die auf das positionierte Element angewendete Größe zu ändern.
Zum Beispiel legt diese Regel die Breite des positionierten Elements auf die gleiche Breite wie das Standardankerelement fest:
.positionedElem {
width: anchor-size(width);
}
Diese Regel legt die Inline-Größe des positionierten Elements auf das Vierfache der Inline-Größe des Ankerelements fest, wobei die Multiplikation innerhalb einer calc() Funktion erfolgt:
.positionedElem {
inline-size: calc(anchor-size(self-inline) * 4);
}
Formale Syntax
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<length-percentage> =
<length> |
<percentage>
Beispiele
>Grundlegende anchor-size() Verwendung
Dieses Beispiel zeigt zwei Elemente, die relativ zu einem Anker positioniert und unter Verwendung von anchor-size() Funktionen dimensioniert werden.
HTML
Wir spezifizieren drei <div> Elemente, ein anchor Element und die zwei infobox Elemente, die wir relativ zum Anker positionieren. Wir fügen auch Fülltext hinzu, um den <body> hoch genug zu machen, um ein Scrollen zu erfordern, aber dies wurde der Kürze halber ausgeblendet.
<div class="anchor">⚓︎</div>
<div class="infobox" id="infobox1">
<p>This is the first infobox.</p>
</div>
<div class="infobox" id="infobox2">
<p>This is the second infobox.</p>
</div>
CSS
Wir deklarieren das anchor <div> als Ankerelement, indem wir ihm einen anchor-name geben. Die positionierten Elemente, deren position Eigenschaften auf fixed gesetzt sind, sind über ihre position-anchor Eigenschaften mit dem Ankerelement verbunden. Wir setzen auch absolute height und width Dimensionen auf dem Anker, um einen Referenzpunkt beim Überprüfen der Abmessungen des positionierten Elements zu bieten, beispielsweise mit den Entwicklerwerkzeugen des Browsers:
.anchor {
anchor-name: --my-anchor;
width: 100px;
height: 50px;
}
.infobox {
position-anchor: --my-anchor;
position: fixed;
}
Wir setzen unterschiedliche Eigenschaftswerte auf den positionierten Elementen:
- Die positionierten Elemente sind mit dem Anker über unterschiedliche
position-areaWerte verbunden, die die Elemente an verschiedenen Stellen um das Ankerelement herum positionieren. - Die
heightder ersten Infobox ist auf die gleiche Höhe wie das Ankerelement eingestellt:anchor-size(height)gibt die Höhe des Ankerelements zurück. Diewidthdes Elements ist auf das Doppelte der Breite des Ankerelements eingestellt, wobei dieanchor-size()Funktion innerhalb einercalc()Funktion verwendet wird:anchor-size(width)ruft die Breite des Ankerelements ab, die dann mit zwei multipliziert wird. - Die
heightder zweiten Infobox ist auf 80% der Höhe des Ankerelements eingestellt, mit einer ähnlichen Technik. - Randwerte werden eingeschlossen, um etwas Abstand vom Ankerelement zu schaffen.
#infobox1 {
position-area: right;
height: anchor-size(height);
width: calc(anchor-size(width) * 2);
margin-left: 5px;
}
#infobox2 {
position-area: top span-right;
height: calc(anchor-size(height) / 1.25);
margin-bottom: 5px;
}
Ergebnis
Verwenden Sie Ihre Browserwerkzeuge, um die ankerpositionierten Elemente zu inspizieren. Die erste Infobox wird 50px hoch und 200px breit sein, während die zweite Infobox 40px hoch sein wird, wobei die width standardmäßig auf max-content gesetzt ist.
Beispiel zu Position und Rand
Spezifikationen
| Spezifikation |
|---|
| CSS Anchor Positioning Module Level 1> # anchor-size-fn> |
Browser-Kompatibilität
Siehe auch
anchor-nameposition-anchoranchor()Funktion- Anleitung zur Verwendung von CSS Anchor Positioning Leitfaden
- CSS Anchor Positioning Modul