anchor-name
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die anchor-name CSS Eigenschaft ermöglicht es, ein Element als Ankerelement zu definieren, indem ihm ein oder mehrere identifizierende Ankernamen gegeben werden. Jeder Name kann dann als Wert der position-anchor Eigenschaft eines positionierten Elements gesetzt werden, um es mit dem Anker zu verbinden.
Syntax
/* Single values */
anchor-name: none;
anchor-name: --name;
/* Multiple values */
anchor-name: --name, --another-name;
/* Global values */
anchor-name: inherit;
anchor-name: initial;
anchor-name: revert;
anchor-name: revert-layer;
anchor-name: unset;
Werte
none-
Der Standardwert. Wenn
anchor-name: noneauf ein Element gesetzt wird, bedeutet dies, dass es nicht als Ankerelement definiert ist. Wenn das Element zuvor als Anker definiert und mit einem positionierten Element verbunden war, wird durch das Setzen vonanchor-name: nonedie Verbindung gelöst. <dashed-ident>-
Ein oder mehrere durch Kommas getrennte beliebige benutzerdefinierte Bezeichner, die den Namen oder die Namen des Ankers definieren, die dann in einer
position-anchorEigenschaft referenziert werden können.
Beschreibung
Um ein Element relativ zu einem Ankerelement zu positionieren, benötigt das positionierte Element drei Merkmale: eine Zuordnung, eine Position und einen Standort. Die Eigenschaften anchor-name und position-anchor bieten eine explizite Zuordnung.
Das Ankerelement akzeptiert einen oder mehrere <dashed-ident> Ankernamen, die über die Eigenschaft anchor-name darauf gesetzt werden. Wenn einer dieser Namen dann als Wert der position-anchor Eigenschaft eines Elements gesetzt wird, dessen position auf absolute oder fixed gesetzt ist, werden die beiden Elemente verbunden. Die beiden Elemente werden durch das Setzen eines Standorts am assoziierten Element relativ zum Anker verbunden, was es zu einem „ankerpositionierten“ Element macht.
Wenn mehrere Ankerelemente denselben Ankernamen auf sich gesetzt haben und dieser Name durch den Wert der position-anchor Eigenschaft eines positionierten Elements referenziert wird, wird dieses positionierte Element mit dem letzten Ankerelement mit diesem Ankernamen in der Quellreihenfolge verbunden.
Anchor-Positionierung verändert den enthältenden Block von anker-positionierten Elementen, wobei ihre position relativ zu ihrem Anker und nicht zum nächstgelegenen positionierten Ahnen-Element ist.
Um ein positioniertes Element an einem bestimmten Ort relativ zu einem Ankerelement zu verankern und zu platzieren, wird eine Ankerpositionierungsfunktion benötigt, wie die anchor() Funktion (innerhalb eines Wertes der Inset-Eigenschaften gesetzt) oder die position-area Eigenschaft.
Sie können ein positioniertes Element nicht mit einem Ankerelement verbinden, wenn der Anker verborgen ist, wie zum Beispiel bei display: none oder visibility: hidden, oder wenn der Anker Teil der übersprungenen Inhalte eines anderen Elements ist, da darauf content-visibility: hidden gesetzt ist.
Die anchor-name Eigenschaft wird von allen Elementen unterstützt, die eine Hauptbox generieren. Das bedeutet, dass Pseudo-Elemente, einschließlich generierter Inhalte, die mit ::before und ::after erstellt werden, und Benutzeroberflächenfunktionen wie der range Eingabe Daumen (::-webkit-slider-thumb) Ankerelemente sein können. Pseudo-Elemente sind implizit an dasselbe Element wie das ursprungselement des Pseudo-Elements verankert, es sei denn, es ist anders angegeben.
Für mehr Informationen über Ankereigenschaften und deren Verwendung siehe die CSS Ankerpositionierung Modul-Landingpage und den Verwendung von CSS Ankerpositionierung Leitfaden.
Formale Definition
| Anfangswert | none |
|---|---|
| Anwendbar auf | All elements that generate a principal box |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
anchor-name =
none |
<dashed-ident>#
Beispiele
>Grundlegende Nutzung
Dieses Beispiel verknüpft ein positioniertes Element mit einem Anker und positioniert das Element rechts vom Anker.
HTML
Wir spezifizieren zwei <div> Elemente; ein Ankerelement mit einer Klasse von anchor und ein positioniertes Element mit einer Klasse von infobox.
Wir fügen auch etwas Fülltext um die beiden <div>s herum hinzu, um den <body> höher zu machen, sodass er scrollen kann.
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Dui nunc mattis enim ut tellus
elementum sagittis vitae et.
</p>
<div class="anchor">⚓︎</div>
<div class="infobox">
<p>This is an information box.</p>
</div>
<p>
Nisi quis eleifend quam adipiscing vitae proin sagittis nisl rhoncus. In arcu
cursus euismod quis viverra nibh cras pulvinar. Vulputate ut pharetra sit amet
aliquam.
</p>
<p>
Malesuada nunc vel risus commodo viverra maecenas accumsan lacus. Vel elit
scelerisque mauris pellentesque pulvinar pellentesque habitant morbi
tristique. Porta lorem mollis aliquam ut porttitor. Turpis cursus in hac
habitasse platea dictumst quisque. Dolor sit amet consectetur adipiscing elit.
Ornare lectus sit amet est placerat. Nulla aliquet porttitor lacus luctus
accumsan.
</p>
CSS
Wir erklären zunächst das anchor <div> als Ankerelement, indem wir ihm über die anchor-name Eigenschaft einen Ankernamen zuweisen:
.anchor {
anchor-name: --my-anchor;
}
Wir verbinden das zweite <div> mit dem Ankerelement, indem wir seinen Ankernamen als Wert der position-anchor Eigenschaft des positionierten Elements setzen. Dann setzen wir folgende Eigenschaften des positionierten Elements:
- Die
positionEigenschaft auffixed, wodurch es zu einem ankerpositionierten Element wird, sodass es relativ zur Position des Ankers auf der Seite positioniert werden kann. - Die
leftundtopEigenschaften aufanchor()Funktionen mit den Wertenrightbzw.top. Dies positioniert den linken Rand der Infobox bündig mit dem rechten Rand ihres Ankers, und ihren oberen Rand relativ zum oberen Rand ihres Ankers. margin-leftauf10px, das einen Abstand zwischen dem ankerpositionierten Element und seinem Anker schafft.
.infobox {
position-anchor: --my-anchor;
position: fixed;
left: anchor(right);
top: anchor(top);
margin-left: 10px;
}
Ergebnis
Scrollen Sie die Seite, um zu sehen, wie die Infobox relativ zum Anker positioniert ist. Wenn der Anker nach oben scrollt, bewegt sich das positionierte Element mit ihm.
Mehrere positionierte Elemente
Dieses Beispiel zeigt, wie Sie mehrere positionierte Elemente mit einem Anker verbinden können.
HTML
Das HTML ist das gleiche wie im vorherigen Beispiel, außer dass wir diesmal mehrere positionierte Element-<div>s mit unterschiedlichen ids haben, um sie zu identifizieren.
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Dui nunc mattis enim ut tellus
elementum sagittis vitae et.
</p>
<div class="anchor">⚓︎</div>
<div class="infobox" id="infobox1">
<p>This is an information box.</p>
</div>
<div class="infobox" id="infobox2">
<p>This is another information box.</p>
</div>
<p>
Nisi quis eleifend quam adipiscing vitae proin sagittis nisl rhoncus. In arcu
cursus euismod quis viverra nibh cras pulvinar. Vulputate ut pharetra sit amet
aliquam.
</p>
<p>
Malesuada nunc vel risus commodo viverra maecenas accumsan lacus. Vel elit
scelerisque mauris pellentesque pulvinar pellentesque habitant morbi
tristique. Porta lorem mollis aliquam ut porttitor. Turpis cursus in hac
habitasse platea dictumst quisque. Dolor sit amet consectetur adipiscing elit.
Ornare lectus sit amet est placerat. Nulla aliquet porttitor lacus luctus
accumsan.
</p>
CSS
Wir erklären das anchor <div> als Ankerelement mit der anchor-name Eigenschaft, indem wir ihm wie zuvor einen Ankernamen geben.
.anchor {
anchor-name: --my-anchor;
}
Jedes der beiden positionierten Elemente wird mit dem Ankerelement verbunden, indem wir seinen Ankernamen als Wert der position-anchor Eigenschaft des positionierten Elements setzen. Beide haben ebenfalls eine fixed Positionierung, wodurch sie zu ankerpositionierten Elementen werden. Die positionierten Elemente werden dann an verschiedenen Stellen relativ zum Anker positioniert, indem eine Kombination von Einsetzeigenschaften wie oben gesehen und align-self / justify-self Eigenschaften mit einem Wert von anchor-center verwendet wird, um die Infobox in der Inline-/Blockrichtung zentral zum Anker auszurichten.
.infobox {
position-anchor: --my-anchor;
position: fixed;
}
#infobox1 {
left: anchor(right);
align-self: anchor-center;
margin-left: 10px;
}
#infobox2 {
bottom: anchor(top);
justify-self: anchor-center;
margin-bottom: 15px;
}
Ergebnis
Scrollen Sie die Seite, um zu sehen, wie beide Infoboxen an den Anker gebunden sind.
Mehrere Ankernamen
Dieses Beispiel zeigt, wie ein Ankerelement mehr als einen Ankernamen haben kann.
HTML
Das HTML ist dasselbe wie im vorherigen Beispiel.
CSS
Auch das CSS ist dasselbe wie im vorherigen Beispiel, mit der Ausnahme, dass wir zwei durch Kommas getrennte Namen im anchor-name Eigenschaftswert des Ziels einschließen und jedes positionierte Element einen anderen Wert für position-anchor hat.
.anchor {
anchor-name: --anchor1, --anchor2;
}
.infobox {
position: fixed;
}
#infobox1 {
position-anchor: --anchor1;
left: anchor(right);
align-self: anchor-center;
margin-left: 10px;
}
#infobox2 {
position-anchor: --anchor2;
bottom: anchor(top);
justify-self: anchor-center;
margin-bottom: 15px;
}
Ergebnis
Scrollen Sie die Seite, um zu sehen, wie beide Infoboxen an den Anker gebunden sind.
Spezifikationen
| Specification |
|---|
| CSS Anchor Positioning> # name> |
Browser-Kompatibilität
Loading…
Siehe auch
position-anchor- HTML
anchorAttribut - CSS Ankerpositionierung Modul
- Verwendung von CSS Ankerpositionierung Leitfaden