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 Setzen von Größen, Positionen und Rändern von verankerungspositionierten 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 der Werte von Größen-, Einfüge- und Rand-Eigenschaften von verankerungspositionierten Elementen verwendet wird.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe die CSS-Ankerpositionierung Modul-Startseite 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 lautet wie folgt:
anchor-size(<anchor-name> <anchor-size>, <length-percentage>)
Die Parameter sind:
<anchor-name>
Optional-
Der
anchor-name
Eigenschaftswert eines Ankerelements, zu dem Sie die Größe, Position oder Ränder des Elements relativ setzen 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, zu welchem Anker die Eigenschaftswerte des Elements relativ gesetzt werden. <anchor-size>
Optional-
Gibt die Dimension des Ankerelements an, zu der die Eigenschaftswerte des positionierten Elements relativ gesetzt werden. Gültige Werte sind:
width
-
Die Breite des Ankerelements.
height
-
Die Höhe des Ankerelements.
block
-
Die Länge des enthältenden Blocks des Ankerelements in Blockrichtung.
inline
-
Die Länge des enthältenden Blocks 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, wird die Dimension standardmäßig auf den
<anchor-size>
Fachbegriff gesetzt, der zur Achse der Eigenschaft passt, in der die Funktion enthalten ist. Zum Beispiel istwidth: anchor-size();
gleichbedeutend mitwidth: anchor-size(width);
. <length-percentage>
Optional-
Gibt die Größe an, die als Fallback verwendet wird, wenn das Element nicht absolut oder fix positioniert ist oder das Ankerelement nicht existiert. Wird dieser Parameter in einem Fall weggelassen, in dem der Fallback genutzt würde, ist die Deklaration ungültig.
Hinweis:
Die Anker-Dimension, zu der Sie die Eigenschaftswerte des positionierten Elements relativ setzen, muss nicht entlang der gleichen Achse liegen wie der zu setzende Größenwert. 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, dass die Größen-, Positions- und Randwerte eines positionierten Elements in Bezug auf die Abmessungen eines Ankerelements ausgedrückt werden; sie gibt einen <length>
Wert zurück, der die Dimension eines spezifischen Ankerelements repräsentiert, zu der die Eigenschaftswerte des positionierten Elements relativ gesetzt sind. Sie ist ein gültiger Wert für auf Anker positionierte Elemente gesetzte Größen-, Einfüge- und Rand-Eigenschaften.
Die zurückgegebene Länge ist die vertikale oder horizontale Größe eines Ankerelements oder seines enthältenden 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 Rand-Eigenschaft, auf die er gesetzt ist. 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 Schreibweisen odermargin-inline-end: anchor-size(height)
in vertikalen Schreibweisen.
Das als Grundlage für die Dimensionslänge verwendete Ankerelement ist das Element mit dem im <anchor-name>
Parameter angegebenen anchor-name
. 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 in den Funktionsaufruf aufgenommen wird, wird der Standardanker des Elements verwendet, der in seiner position-anchor
Eigenschaft referenziert wird oder dem Element über das anchor
HTML-Attribut zugeordnet ist.
Wenn ein <anchor-name>
Parameter enthalten ist und keine Elemente mit diesem Ankernamen übereinstimmen, wird der Fallbackwert 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 dem positionierten Element angegeben wurde, aber kein Anker namens --foo
im DOM existiert, würde die width
50px
sein und die height
Deklaration hätte keinen Effekt.
Wenn ein Element Größen-, Positions- oder Randeigenschaften mit anchor-size()
Werten hat, die auf ihnen gesetzt sind, aber es kein Anker-Positioniertes Element ist (es hat seine position
Eigenschaft nicht auf absolute
oder fixed
gesetzt oder hat keinen Anker über seine position-anchor
Eigenschaft zugeordnet), wird der Fallbackwert 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 dem positionierten Element angegeben wurde, aber kein Anker damit assoziiert war, würde der Fallbackwert verwendet, sodass width
einen berechneten Wert von 50px
hätte.
Für detaillierte Informationen zu Ankerfunktionen und deren Verwendung siehe die CSS-Ankerpositionierung Modul-Startseite und den Anleitung zur Verwendung von CSS-Ankerpositionierung.
Eigenschaften, die anchor-size()
Funktionswerte akzeptieren
Die Eigenschaften, die anchor-size()
als Wert akzeptieren, umfassen:
- Größen-Eigenschaften:
- Einfüge-Eigenschaften:
bottom
left
right
top
inset
Kurzforminset-block
Kurzforminset-block-end
inset-block-start
inset-inline
Kurzforminset-inline-end
inset-inline-start
- Rand-Eigenschaften:
margin
Kurzformmargin-bottom
margin-left
margin-right
margin-top
margin-block
Kurzformmargin-block-end
margin-block-start
margin-inline
Kurzformmargin-inline-end
margin-inline-start
Verwendung von anchor-size()
innerhalb von calc()
Die häufigsten anchor-size()
Funktionen, die Sie verwenden werden, beziehen sich einfach 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 modifizieren.
Zum Beispiel bestimmt diese Regel die Breite des positionierten Elements in gleicher Höhe mit der Breite des Standardankerelements:
.positionedElem {
width: anchor-size(width);
}
Diese Regel bestimmt 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 anchor-size()
Nutzung
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 hinzu, um die <body>
hoch genug zu machen, um 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, werden über ihre position-anchor
Eigenschaften mit dem Ankerelement assoziiert. Wir setzen außerdem absolute height
und width
Dimensionen auf den Anker, um einen Referenzpunkt beim Überprüfen der Dimensionen des positionierten Elements bereitzustellen, zum Beispiel mit Entwickler-Tools des Browsers:
.anchor {
anchor-name: --my-anchor;
width: 100px;
height: 100px;
}
.infobox {
position-anchor: --my-anchor;
position: fixed;
}
Wir setzen einige unterschiedliche Eigenschaftswerte auf den positionierten Elementen:
- Die positionierten Elemente sind mit dem Anker über verschiedene
position-area
Werte verbunden, die die Elemente an verschiedenen Stellen um das Ankerelement herum positionieren. - Die
height
der ersten Infobox wird auf die gleiche Höhe wie das Ankerelement gesetzt:anchor-size(height)
gibt die Höhe des Ankerelements zurück. Diewidth
des Elements wird auf das Doppelte der Breite des Ankerelements gesetzt, indem dieanchor-size()
Funktion innerhalb einercalc()
Funktion verwendet wird:anchor-size(width)
ruft die Breite des Ankerelements ab, die dann mit zwei multipliziert wird. - Die
height
der zweiten Infobox wird auf zwei Drittel der Ankerhöhe gesetzt, indem eine ähnliche Technik verwendet wird. - Randwerte werden hinzugefügt, 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.5);
margin-bottom: 5px;
}
Ergebnis
Verwenden Sie Ihre Browser-Tools, um die Anker-positionierten Elemente zu inspizieren. Die erste Infobox wird 100px
hoch und 200px
breit sein, während die zweite Infobox eine Höhe von ungefähr 66,7px
haben wird, wobei die width
standardmäßig auf max-content
gesetzt ist.
Position und Ränder Beispiel
Spezifikationen
Specification |
---|
CSS Anchor Positioning> # anchor-size-fn> |
Browser-Kompatibilität
Loading…