position-try

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die position-try CSS Eigenschaft ist eine Kurzform, die den Eigenschaften position-try-order und position-try-fallbacks entspricht.

Zusammengesetzte Eigenschaften

Diese Eigenschaft ist eine Kurzform für die folgenden CSS-Eigenschaften:

Syntax

css
/* position-try-fallbacks only */
position-try: normal flip-block;
position-try: top;
position-try: --custom-try-option;
position-try: flip-block flip-inline;
position-try: top, right, bottom;
position-try: --custom-try-option1, --custom-try-option2;
position-try:
  normal flip-block,
  right,
  --custom-try-option;

/* position-try-order and position-try-fallbacks */
position-try: normal none;
position-try:
  most-width --custom-try-option1,
  --custom-try-option2;
position-try:
  most-height flip-block,
  right,
  --custom-try-option;

/* Global values */
position-try: inherit;
position-try: initial;
position-try: revert;
position-try: revert-layer;
position-try: unset;

Werte

Siehe position-try-order und position-try-fallbacks für Wertbeschreibungen.

Die position-try Kurzform kann Werte für position-try-fallbacks oder position-try-order und position-try-fallbacks in dieser Reihenfolge angeben. Wenn position-try-order weggelassen wird, wird es auf den Initialwert der Eigenschaft gesetzt, der normal ist. Das bedeutet, dass die Fallback-Optionen in der Reihenfolge ausprobiert werden, in der sie in der Eigenschaft erscheinen.

Formale Definition

Anfangswertwie die jeweiligen Kurzschreibweisen:
Anwendbar aufabsolut positionierte Elemente
VererbtNein
Prozentwertewie die jeweiligen Kurzschreibweisen:
Berechneter Wertwie die jeweiligen Kurzschreibweisen:
Animationstypwie die jeweiligen Kurzschreibweisen:

Formale Syntax

position-try = 
<'position-try-order'>? <'position-try-fallbacks'>

<position-try-order> =
normal |
<try-size>

<position-try-fallbacks> =
none |
[ [ <dashed-ident> || <try-tactic> ] | <'position-area'> ]#

<try-size> =
most-width |
most-height |
most-block-size |
most-inline-size

<try-tactic> =
flip-block ||
flip-inline ||
flip-start

<position-area> =
none |
<position-area>

<position-area> =
[ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] |
[ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] |
[ self-block-start | center | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | center | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] |
[ start | center | end | span-start | span-end | span-all ]{1,2} |
[ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2}

Beispiele

Grundlegende Verwendung von position-try

Dieses Demo zeigt die Wirkung von position-try.

HTML

Das HTML enthält zwei <div>-Elemente, die zu einem Anker und einem ankerpositionierten Element werden.

html
<div class="anchor">⚓︎</div>

<div class="infobox">
  <p>This is an information box.</p>
</div>

CSS

Im CSS erhält der Anker einen anchor-name und hat einen position-Wert von absolute gesetzt. Wir positionieren es in der oberen Hälfte des Viewports mit top und left Werten:

css
.anchor {
  anchor-name: --myAnchor;
  position: absolute;
  top: 100px;
  left: 45%;
}

Wir fügen dann eine benutzerdefinierte Positionsoption hinzu — --custom-bottom — die das Element unterhalb des Ankers positioniert und ihm einen entsprechenden Rand gibt:

css
@position-try --custom-bottom {
  top: anchor(bottom);
  bottom: unset;
  margin-top: 10px;
}

Wir positionieren das Element zunächst über seinem Anker und setzen dann einen position-try Wert darauf, der ihm einen position-try-order von most-height gibt, und eine position-try-fallbacks Liste, die nur unsere benutzerdefinierte Fallback-Option enthält:

css
.infobox {
  position: fixed;
  position-anchor: --myAnchor;

  bottom: anchor(top);
  margin-bottom: 10px;
  justify-self: anchor-center;

  position-try: most-height --custom-bottom;
}

Ergebnis

Das Element erscheint unterhalb seines Ankers, obwohl es ursprünglich darüber positioniert ist. Dies geschieht, weil unterhalb des Ankers mehr vertikaler Platz ist als darüber. Die most-height Try-Order bewirkt, dass die --custom-bottom Try-Fallback-Option angewendet wird, wodurch das positionierte Element in der Position platziert wird, die seinem enthaltenden Block die größte Höhe gibt.

Spezifikationen

Specification
CSS Anchor Positioning
# position-try-prop

Browser-Kompatibilität

Siehe auch