position-try-order
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die position-try-order CSS Eigenschaft ermöglicht es Ihnen, verschiedene Fallback-Optionen anzugeben, die dazu führen, dass ein verfügbarer position-try Fallback verwendet wird, um die Position eines Anker-positionierten Elements festzulegen, anstatt seiner ursprünglichen Positionseinstellungen.
Hinweis:
Es gibt auch eine Kurzform-Eigenschaft — position-try, die verwendet werden kann, um position-try-order und position-try-fallbacks Werte in einer einzigen Deklaration anzugeben.
Syntax
/* Keywords */
position-try-order: normal;
position-try-order: most-height;
position-try-order: most-width;
position-try-order: most-block-size;
position-try-order: most-inline-size;
/* Global values */
position-try-order: inherit;
position-try-order: initial;
position-try-order: revert;
position-try-order: revert-layer;
position-try-order: unset;
Werte
Die position-try-order Eigenschaft kann entweder als Schlüsselwortwert normal oder als <try-size> angegeben werden.
normal-
Der Standardwert. Es werden keine position-try Fallback-Optionen ausprobiert, wenn das Element das erste Mal angezeigt wird.
<try-size>-
Definiert die verschiedenen Try-Size Fallback-Optionen, die Kriterien bestimmen, welche Try-Fallback auf das Anker-positionierte Element angewendet werden sollen, wenn es zunächst gerendert wird. Verfügbare Werte sind:
most-height-
Die Position-try Fallback-Option wird angewendet, die dem enthaltenden Block des Elements die meiste Höhe gibt.
most-width-
Die Position-try Fallback-Option wird angewendet, die dem enthaltenden Block des Elements die meiste Breite gibt.
most-block-size-
Die Position-try Fallback-Option wird angewendet, die dem enthaltenden Block des Elements die größte Größe in Blockrichtung gibt.
most-inline-size-
Die Position-try Fallback-Option wird angewendet, die dem enthaltenden Block des Elements die größte Größe in Inlinerichtung gibt.
Beschreibung
Die position-try-order Eigenschaft hat einen leicht anderen Fokus als die restlichen position-try Funktionalitätsmerkmale, da sie Position-try Fallback-Optionen nutzen kann, wenn das positionierte Element das erste Mal angezeigt wird, anstatt wenn es gescrollt wird. Zum Beispiel könnten Sie das Element zunächst in einem Bereich anzeigen wollen, der mehr verfügbare Höhe oder Breite als die standardmäßige Anfangsposition hat.
Der Browser testet die verfügbaren position-try Fallback-Optionen, um herauszufinden, welche dem Anker-positionierten Element den meisten Raum in der angegebenen Dimension bietet. Anschließend wird diese Option angewendet und die ursprünglichen Stil-Einstellungen des Elements überschrieben.
Wenn keine Position-try Fallback-Option verfügbar ist, die mehr Breite/Höhe bietet als die dem Element zugewiesene Anfangsposition, wird keine Position-try Option angewendet. Effektiv verhält es sich so, als ob position-try-order auf normal gesetzt wäre.
Für detaillierte Informationen zu Ankerfunktionen und der Verwendung von Position-try-Optionen, siehe das CSS anchor positioning Modul und den Fallback Options and conditional hiding for overflow Leitfaden.
Formale Definition
| Anfangswert | normal |
|---|---|
| Anwendbar auf | absolut positionierte Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
position-try-order =
normal |
<try-size>
<try-size> =
most-width |
most-height |
most-block-size |
most-inline-size
Beispiele
>Grundlegende Verwendung von position-try-order
Dieses Demo zeigt die Wirkung von position-try-order.
HTML
Das HTML beinhaltet zwei <div> Elemente, die zu einem Anker und einem Anker-positionierten Element werden, und ein <form>, das Radio-Buttons enthält, mit denen Sie verschiedene Werte von position-try-order auswählen können.
<div class="anchor">⚓︎</div>
<div class="infobox">
<p>This is an information box.</p>
</div>
<form>
<fieldset>
<legend>Choose a try order</legend>
<div>
<label for="radio-normal">normal</label>
<input
type="radio"
id="radio-normal"
name="position-try-order"
value="normal"
checked />
</div>
<div>
<label for="radio-most-height">most-height</label>
<input
type="radio"
id="radio-most-height"
name="position-try-order"
value="most-height" />
</div>
</fieldset>
</form>
CSS
Im CSS erhält der Anker einen anchor-name und hat einen großen margin, um ihn zum oberen Zentrum des Viewports zu positionieren:
.anchor {
anchor-name: --my-anchor;
margin: 90px auto;
}
Wir fügen dann eine benutzerdefinierte Positionsoption namens --custom-bottom hinzu, die das Element unterhalb des Ankers positioniert und ihm einen passenden Rand gibt:
@position-try --custom-bottom {
top: anchor(bottom);
bottom: unset;
margin-top: 10px;
}
Wir positionieren das Element zunächst über seinem Anker und geben ihm dann unsere benutzerdefinierte Positionsoption mit der position-try Kurzform, die ebenfalls die position-try-order Eigenschaft auf normal setzt:
.infobox {
position: fixed;
position-anchor: --my-anchor;
bottom: anchor(top);
margin-bottom: 10px;
justify-self: anchor-center;
position-try: normal --custom-bottom;
}
JavaScript
Abschließend fügen wir etwas JavaScript hinzu. Dies legt einen change Ereignishandler für die Radio-Buttons fest, sodass der ausgewählte Wert, wenn ein neuer Wert ausgewählt wird, auf die position-try-order Eigenschaft der Infobox angewendet wird.
const infobox = document.querySelector(".infobox");
const form = document.forms[0];
const radios = form.elements["position-try-order"];
for (const radio of radios) {
radio.addEventListener("change", setTryOrder);
}
function setTryOrder(e) {
const tryOrder = e.target.value;
infobox.style.positionTryOrder = tryOrder;
}
Ergebnis
Versuchen Sie, die most-height Reihenfolgeoption auszuwählen. Dies hat zur Folge, dass --custom-bottom als Position-try Fallback-Option angewendet wird, wodurch das Element unterhalb des Ankers positioniert wird. Dies geschieht, da unterhalb des Ankers mehr vertikaler Raum vorhanden ist als oberhalb.
Spezifikationen
| Specification |
|---|
| CSS Anchor Positioning> # position-try-order-property> |
Browser-Kompatibilität
Loading…
Siehe auch
position-tryposition-try-fallbacks- Die
@position-tryAt-Regel - CSS anchor positioning Modul
- Verwendung von CSS anchor positioning Leitfaden
- Fallback Optionen und bedingtes Verbergen bei Überlauf Leitfaden