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 Verbergen eines ankerpositionierten Elements, zum Beispiel, wenn es seinen enthaltenden oder den Ansichtsbereich ü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 der Anker vollständig verborgen ist, sei es durch Überlauf des enthaltenden Elements (oder des Ansichtsbereichs) oder durch Verdeckung durch andere Elemente, wird das positionierte Element stark verborgen.

no-overflow

Wenn das positionierte Element beginnt, seinen enthaltenden oder den Ansichtsbereich zu überlaufen, wird es stark verborgen.

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

Beschreibung

In einigen Situationen möchten Sie möglicherweise ein ankerpositioniertes Element nicht anzeigen. Zum Beispiel, wenn der zugehörige Anker außerhalb des Bildschirms gescrollt wurde, das ankerpositionierte Element jedoch teilweise oder vollständig sichtbar bleibt, könnte es unklar sein, worauf es sich bezieht und unnötig Platz einnehmen. Daher möchten Sie es möglicherweise vollständig verbergen.

Die Eigenschaft position-visibility kann verwendet werden, um das ankerpositionierte Element always anzuzeigen oder es bedingt zu verbergen, wenn das zugehörige Ankerelement vollständig verborgen ist (anchors-visible) oder wenn das ankerpositionierte Element selbst teilweise verborgen ist (no-overflow).

Wenn ein Element aufgrund von position-visibility verborgen wird, wird dies als stark verborgen bezeichnet. Das bedeutet, dass es so wirkt, als ob es und seine Nachkommenelemente den visibility Wert hidden hätten, unabhängig davon, welcher Sichtbarkeitswert tatsächlich gesetzt ist.

position-visibility sollte nur in Situationen verwendet werden, in denen das vollständige Verbergen des positionierten Elements bevorzugt wird. In den meisten Fällen ist es sinnvoller, zu versuchen, die Platzierung von positionierten Elementen zu ändern, wenn sie zu überlaufen beginnen, um sie auf dem Bildschirm und benutzbar zu halten. Dies kann mit der Eigenschaft position-try-fallbacks und der Regel @position-try erreicht werden. Weitere Informationen finden Sie im Fallback-Optionen und bedingtes Verbergen 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 Wertes der position-visibility Eigenschaft eines ankerpositionierten Elements, um die Effekte jedes Wertes zu demonstrieren.

HTML

Wir spezifizieren zwei <div> Elemente: ein Ankerelement mit einer Klasse anchor und ein positioniertes Element mit einer Klasse 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 Ansichtsbereich zu machen, sodass Scrollen erforderlich ist. Wir haben auch ein <fieldset> mit einer Gruppe von Radio-Inputs mit verschiedenen position-visibility Werten hinzugefügt. Der Markup dafür wird der Kürze halber nicht angezeigt.

CSS

Wir stylen ein anchor <div> als Ankerelement und binden das infobox <div> daran. Der relevante CSS 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 Ereignis-Handler auf die Radio-Buttons ein, sodass, wenn ein neuer Wert ausgewählt wird, wir den position-visibility Eigenschaftswert des Infobox aktualisieren.

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 hoch und runter, um deren Effekte zu sehen. Bei position-visibility: always wird das positionierte Element nicht verborgen. Bei position-visibility: anchors-visible wird das positionierte Element nur sichtbar sein, wenn der Anker teilweise oder vollständig auf dem Bildschirm ist. Bei position-visibility: no-overflow wird das positionierte Element verborgen, sobald es beginnt, den Ansichtsbereich zu überlaufen.

Spezifikationen

Specification
CSS Anchor Positioning
# position-visibility

Browser-Kompatibilität

Siehe auch