Florence Maurice

Webthemen

Flexbox: Elemente intelligent ausblenden mit visibility: collapse

Geschrieben am:

Bei Flexbox passen sich die Elemente aneinander an - aber was ist, wenn Elemente temporär ausgeblendet werden … und die umgebenden Elemente sich trotzdem daran anpassen sollen?

In diesem Fall hilft visibility: collapse.

Die Eigenschaft visibility steuert – wenig überraschend – die Sichtbarkeit von Elementen. Mit visibility: hidden ist ein Element ausgeblendet. Ein Element lässt sich ebenfalls mit display: none ausblenden. Einen entscheidenden Unterschied gibt es jedoch zwischen den beiden: Wenn man ein Element mit visibiliy: hidden ausblendet, ist es zwar unsichtbar, aber der Platz, den es eigentlich einnehmen würde, ist immer noch reserviert. Bei display ist das nicht der Fall.

Die Eigenschaft visibility hat neben den bekannten Werte visible und hidden auch noch den weniger bekannten Wert collapse. Und dieser ist gerade bei Flexbox praktisch, denn damit können wir dafür sorgen, dass auch wenn Elemente eingeklappt sind, doch ihre Ausmaße herangezogen werden. Damit kommt es nicht zu unschönen Verschiebungen, wenn die Elemente ausgeklappt werden.

Ein/Ausklappen mit display: none - der linke Bereich hat unterschiedlichen Breiten je nachdem, ob die Unterelemente ausgeklappt sind oder nicht:

Verschiebungen beim Ein/Ausblenden mit display: hidden

Ein/Ausklappen mit visibility: collapse - hier verändert der linke Bereich seine Breite nicht.

Beibehaltene Breiten dank visibility: collapse

Das Beispiel basiert auf dem vom W3C in der Spezifikation gezeigten Beispiel.

Live testen: