anchor-size()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die anchor-size() CSS Funktion ermöglicht das Festlegen der Größe, Position und Abstände von ankerpositionierten Elementen relativ zu den Abmessungen von Ankerelementen. Sie gibt die <length> einer bestimmten Seite des Zielankerelements zurück. anchor-size() ist nur gültig, wenn sie innerhalb des Wertes von ankerpositionierten Elementen für die Größen-, Einfüge- und Abstandseigenschaften verwendet wird.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe die CSS-Ankerpositionierung Modulseite und den Anleitung zur Verwendung von CSS-Ankerpositionierung.
Syntax
/* sizing relative to anchor side */
width: anchor-size(width);
block-size: anchor-size(block);
height: calc(anchor-size(self-inline) + 2em);
/* sizing relative to named anchor's 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
anchor-nameEigenschaftswert eines Ankerelements, dessen Größe, Position oder Abstände Sie festlegen möchten. Dies ist ein<dashed-ident>Wert. Wenn weggelassen, wird der Standardanker des Elements verwendet.Hinweis: Die Angabe eines
<anchor-name>innerhalb eineranchor-size()Funktion verbindet oder verankert ein Element nicht mit einem Anker; es definiert nur, relativ zu welchem Anker die Eigenschaftswerte des Elements 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 enthaltenden Blocks des Ankerelements in Blockrichtung.
inline-
Die Länge des enthaltenden Blocks des Ankerelements in Inlinerichtung.
self-block-
Die Länge des Ankerelements in Blockrichtung.
self-inline-
Die Länge des Ankerelements in Inlinerichtung.
Hinweis: Wenn dieser Parameter weggelassen wird, ist die Dimension standardmäßig der
<anchor-size>Schlüsselbegriff, der mit der Achse der Eigenschaft übereinstimmt, 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-Wert verwendet werden soll, wenn das Element nicht absolut oder fix positioniert ist oder das Ankerelement nicht existiert. Wenn dieser Parameter in einem Fall weggelassen wird, in dem der Fallback ansonsten verwendet würde, ist die Deklaration ungültig.
Hinweis:
Die Ankerdimension, die Sie relativ zu den Eigenschaftswerten des positionierten Elements festlegen, 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 Abstandsgrößen eines positionierten Elements in Bezug auf die Dimensionen eines Ankerelements auszudrücken; sie gibt einen <length> Wert zurück, der die Dimension eines bestimmten Ankerelements darstellt, relativ zu dem die Eigenschaftswerte des positionierten Elements festgelegt sind. Es ist ein gültiger Wert für Größen-, Einfüge- und Abstandseigenschaften, die auf ankerpositionierten Elementen festgelegt sind.
Die zurückgegebene Länge ist die vertikale oder horizontale Größe eines Ankerelements oder dessen enthaltenden Blocks. Die verwendete Dimension wird durch den <anchor-size> Parameter definiert. Wenn dieser Parameter weggelassen wird, entspricht die verwendete Dimension der Achse der Größen-, Positions- oder Abstandseigenschaft, auf die sie angewendet wird. So zum Beispiel:
width: anchor-size()ist gleichbedeutend mitwidth: anchor-size(width).top: anchor-size()ist gleichbedeutend mittop: anchor-size(height).margin-inline-end: anchor-size()ist gleichbedeutend mitmargin-inline-end: anchor-size(self-inline).margin-inline-end: anchor-size()ist auch gleichbedeutend mitmargin-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 dimensionale Länge dient, ist das Element mit dem anchor-name, das im <anchor-name> Parameter angegeben ist. Wenn mehr als ein Element denselben Ankernamen hat, wird das letzte Element mit diesem Ankernamen in der DOM-Reihenfolge verwendet.
Wenn kein <anchor-name> Parameter im Funktionsaufruf enthalten ist, wird der Standardanker des Elements verwendet, der in seiner position-anchor Eigenschaft referenziert oder dem Element über das anchor HTML-Attribut zugeordnet ist.
Wenn ein <anchor-name> Parameter enthalten ist und es keine Elemente gibt, die diesem Ankernamen entsprechen, wird der Fallback-Wert verwendet. Wenn kein Fallback enthalten ist, wird die Deklaration ignoriert. Zum Beispiel, wenn width: anchor-size(--foo width, 50px); height: anchor-size(--foo width); auf das positionierte Element spezifiziert wurde, aber kein Anker mit dem Namen --foo im DOM vorhanden ist, würde die width 50px betragen und die height Deklaration hätte keine Wirkung.
Wenn ein Element Größen-, Positions- oder Abstandseigenschaften mit anchor-size() Werten aufweist, aber kein ankerpositioniertes Element ist (es hat die position Eigenschaft nicht auf absolute oder fixed gesetzt oder hat keinen Anker, der ihm über seine position-anchor Eigenschaft zugeordnet ist), wird der Fallback-Wert verwendet, wenn einer verfügbar ist. Wenn kein Fallback verfügbar ist, wird die Deklaration ignoriert.
Zum Beispiel, wenn width: anchor-size(width, 50px); auf das positionierte Element spezifiziert wurde, aber kein Anker ihm zugeordnet wurde, würde der Fallback-Wert verwendet, sodass width einen berechneten Wert von 50px erhält.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe die CSS-Ankerpositionierung Modulseite und den Anleitung zur Verwendung von CSS-Ankerpositionierung.
Eigenschaften, die anchor-size() Funktionswerte akzeptieren
Die Eigenschaften, die eine anchor-size() Funktion als Wert akzeptieren, umfassen:
- Größeneigenschaften:
- Einfügeeigenschaften:
bottomleftrighttopinsetKurzschreibweiseinset-blockKurzschreibweiseinset-block-endinset-block-startinset-inlineKurzschreibweiseinset-inline-endinset-inline-start
- Abständeigenschaften:
marginKurzschreibweisemargin-bottommargin-leftmargin-rightmargin-topmargin-blockKurzschreibweisemargin-block-endmargin-block-startmargin-inlineKurzschreibweisemargin-inline-endmargin-inline-start
Verwendung von anchor-size() innerhalb von calc()
Die häufigsten anchor-size() Funktionen, die Sie verwenden werden, beziehen sich nur auf eine Dimension des Standardankers. Alternativ schließen Sie die anchor-size() Funktion in eine calc() Funktion ein, um die Größe des positionierten Elements zu modifizieren.
Beispielsweise legt diese Regel die Breite des positionierten Elements gleich der Breite des Standard-Ankerelements fest:
.positionedElem {
width: anchor-size(width);
}
Diese Regel setzt die Inline-Größe des positionierten Elements auf das Vierfache der Inline-Größe des Ankerelements, wobei die Multiplikation innerhalb einer calc() Funktion durchgeführt wird:
.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 Verwendung von anchor-size()
Dieses Beispiel zeigt zwei Elemente, die relativ zu einem Anker positioniert und mit anchor-size() Funktionen dimensioniert sind.
HTML
Wir spezifizieren drei <div> Elemente, ein anchor Element und die zwei infobox Elemente, die wir relativ zum Anker positionieren werden. Wir fügen auch Fülltext ein, um das <body> hoch genug zu machen, um Scrollen zu erfordern, aber dies wurde der Kürze halber weggelassen.
<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 erklären das anchor <div> als ein Ankerelement, indem wir ihm einen anchor-name geben. Die positionierten Elemente, deren position Eigenschaften auf fixed gesetzt sind, werden über ihre position-anchor Eigenschaften mit dem Ankerelement verbunden. Wir setzen außerdem absolute height und width Dimensionen auf den Anker, um beim Überprüfen der Abmessungen der positionierten Elemente, z.B. mit Entwicklerwerkzeugen im Browser, einen Bezugspunkt zu bieten:
.anchor {
anchor-name: --my-anchor;
width: 100px;
height: 100px;
}
.infobox {
position-anchor: --my-anchor;
position: fixed;
}
Wir setzen einige unterschiedliche Eigenschaftswerte auf die positionierten Elemente:
- Die positionierten Elemente sind mit dem Anker durch verschiedene
position-areaWerte verbunden, die die Elemente an verschiedenen Stellen um das Ankerelement positionieren. - Die
heightder ersten Infobox wird auf dieselbe Höhe wie das Ankerelement gesetzt:anchor-size(height)gibt die Höhe des Ankerelements zurück. Diewidthdes Elements wird auf das Doppelte der Breite des Ankerelements gesetzt, 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 wird auf zwei Drittel der Höhe des Ankerelements gesetzt, unter Verwendung einer ähnlichen Technik. - Randwerte sind enthalten, um etwas Abstand zum 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.5);
margin-bottom: 5px;
}
Ergebnis
Verwenden Sie Ihre Browsertools, um die ankerpositionierten Elemente zu inspizieren. Die erste Infobox ist 100px hoch und 200px breit, während die zweite Infobox eine Höhe von ca. 66,7px hat, wobei die width standardmäßig auf max-content gesetzt ist.
Beispiel für Position und Rand
Spezifikationen
| Specification |
|---|
| CSS Anchor Positioning> # anchor-size-fn> |
Browser-Kompatibilität
Loading…
Siehe auch
anchor-nameposition-anchoranchor()Funktion- Verwendung von CSS-Ankerpositionierung Anleitung
- CSS-Ankerpositionierung Modul