position-visibility

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die position-visibility CSS-Eigenschaft ermöglicht das bedingte Ausblenden eines anchorgebundenen Elements, abhängig davon, ob es beispielsweise sein enthaltendes Element oder den Viewport überläuft.

Syntax

css
/* Single values */
position-visibility: always;
position-visibility: anchors-visible;
position-visibility: no-overflow;

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

Werte

always

Das positionierte Element wird immer angezeigt.

anchors-visible

Wenn das Anchor-Element vollständig versteckt ist, entweder weil es sein enthaltendes Element (oder den Viewport) überläuft oder von anderen Elementen überdeckt wird, wird das positionierte Element stark versteckt.

no-overflow

Wenn das positionierte Element beginnt, sein enthaltendes Element oder den Viewport zu überlaufen, wird es stark versteckt.

Die Spezifikation definiert auch den Wert anchors-valid, der jedoch in keinem Browser implementiert wurde.

Beschreibung

In einigen Situationen möchten Sie möglicherweise ein anchorgebundenes Element nicht anzeigen. Wenn zum Beispiel das zugehörige Anchor-Element vom Bildschirm gescrollt wurde, das anchorgebundene Element jedoch ansonsten noch teilweise oder vollständig sichtbar wäre, kann es unklar sein, worauf es sich bezieht und nimmt unnötig Platz ein. Daher möchten Sie es möglicherweise vollständig ausblenden.

Die Eigenschaft position-visibility kann verwendet werden, um das anchorgebundene Element immer anzuzeigen oder bedingt auszublenden, wenn das zugehörige Anchor-Element vollständig versteckt ist (anchors-visible) oder wenn das anchorgebundene Element selbst teilweise versteckt ist (no-overflow).

Wenn ein Element aufgrund von position-visibility ausgeblendet wird, wird es als stark versteckt bezeichnet. Das bedeutet, dass es so wirkt, als hätten es und seine Nachkommen-Elemente einen visibility-Wert von hidden, unabhängig von ihrem tatsächlichen Sichtbarkeitswert.

position-visibility sollte nur in Situationen verwendet werden, in denen es bevorzugt wird, das positionierte Element vollständig auszublenden. In den meisten Fällen ist es sinnvoller, zu versuchen, die Platzierung von positionierten Elementen zu ändern, wenn sie beginnen, den Bildschirm zu überlaufen, um sie auf dem Bildschirm und nutzbar zu halten. Dies kann mit der Eigenschaft position-try-fallbacks und der Regel @position-try erfolgen. Weitere Informationen finden Sie im Fallback-Optionen und bedingtes Verstecken bei Überlauf-Leitfaden.

Formale Definition

Anfangswertanchors-visible
Anwendbar aufabsolut positionierte Elemente
VererbtNein
Berechneter Wertwie angegeben
Animationstypdiskret

Formale Syntax

position-visibility = 
always |
[ anchors-valid || anchors-visible || no-overflow ]

Beispiele

Grundlegende Nutzung

Dieses Beispiel ermöglicht das Ändern des Werts der position-visibility-Eigenschaft eines anchorgebundenen Elements, um die Effekte jedes Wertes zu demonstrieren.

HTML

Wir spezifizieren zwei <div>-Elemente: ein Anchor-Element mit einer Klasse von anchor und ein positioniertes Element mit einer Klasse von infobox.

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

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

Das HTML enthält auch Fülltext, um den Inhalt größer als den Viewport zu machen, sodass Scrollen erforderlich ist. Wir haben auch ein <fieldset> mit einer Gruppe von Radio-Inputs mit verschiedenen position-visibility-Werten eingefügt. Der Markup für diese wird der Kürze halber nicht gezeigt.

CSS

Wir stylen ein anchor <div> als Anchor-Element und binden das infobox <div> daran. Der relevante CSS-Code ist wie folgt:

css
.anchor {
  anchor-name: --myAnchor;
}

.infobox {
  position-anchor: --myAnchor;
  position: fixed;
  position-area: top span-all;
  margin-bottom: 5px;
  position-visibility: always;
}

JavaScript

Wir fügen einen change-Event-Handler auf den Radio-Buttons hinzu, sodass beim Auswählen eines neuen Werts der position-visibility-Wert der Infobox aktualisiert wird.

js
const infobox = document.querySelector(".infobox");
const radios = document.querySelectorAll('[name="position-visibility"]');

for (const radio of radios) {
  radio.addEventListener("change", setPositionVisibility);
}

function setPositionVisibility(e) {
  infobox.style.positionVisibility = e.target.value;
}

Ergebnis

Wählen Sie verschiedene position-visibility-Werte aus und scrollen Sie dann die Seite auf und ab, um deren Effekte zu sehen. Mit position-visibility: always wird das positionierte Element nicht versteckt. Mit position-visibility: anchors-visible wird das positionierte Element nur sichtbar sein, wenn der Anchor teilweise oder vollständig auf dem Bildschirm ist. Mit position-visibility: no-overflow wird das positionierte Element ausgeblendet, sobald es beginnt, den Viewport zu überlaufen.

Spezifikationen

Specification
CSS Anchor Positioning
# position-visibility

Browser-Kompatibilität

Siehe auch