imarketinx.de
Start   •   Artikel   •   Artikel-Verzeichnis

21. Januar 2021

Sieben Wege, HTML-Elemente per CSS zu verstecken

Versteckt ist nicht gleich verschwunden

English version

Es gibt, wie so oft, verschiedene Wege, um HTML-Elemente zu verstecken. Aber nicht in jedem Fall verschwindet das Element dann auch vom Bildschirm. In solchen Fällen bleibt noch ein leerer Raum auf dem Screen sichtbar.
In diesem kurzen Artikel möchte ich Ihnen mehr oder weniger sinnvolle Methoden zeigen, wie man HTML-Elemente vor Usern versteckt.

Ich verwende Absatzelemente und habe alle Beispiele mit background-color, color und border gestylt, um besser sichtbar (oder unsichtbar!) zu machen, was mit welcher CSS-Anweisung passiert.

Aufbau der Beispiele

Zunächst wird der CCS-Code angezeigt, der zum Ausblenden der HTML-Elemente benötigt wird.

Dann werde ich drei Absätze zeigen, in denen der Code nicht angewendet wird.

Schließlich gibt es einen blau umrandeten Absatz, in dem ich erkläre, was passiert ist.

Übersicht

In diesem Artikel werde ich zwar acht CSS-Attribute oder -Werte verwenden, aber das ergibt nur sieben Methoden.

Die CSS-Attribute oder -Werte sind identisch mit der Methode, bis auf die Methode "Zero Pixels", die ich für die Schriftgröße und für Höhe und Breite verwende.

Direkt zu den einzelnen Methoden springen:

1. display | 2. opacity | 3. position | 4. transform | 5. transparent | 6. visibility
7. Zero pixels: a) font-size | b) height and width

1. Display

CSS Code
.display-none {
  display: none;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz Code angewendet display: none:

Ergebnis: Das Element und der Platz des Elements auf dem Bildschirm sind verschwunden. Achten Sie auf die Barrierefreiheit: Nicht alle Screenreader lesen ein Element mit display: none.




2. Opacity

CSS Code
.opac-0 {
  opacity: 0;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz Code angewendet opacity: 0:

Ergebnis: Der Hintergrund, der Text und der Rahmen sind verschwunden, aber nicht der Platz des Elements auf dem Bildschirm.




3. Position

CSS Code
.position-off-screen {
  position: absolute;
  left: -10000px;
  top: auto;
  width:1px;
  height:1px;
  overflow: hidden;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz angewendet CSS-Klasse .position-off-screen:

Ergebnis: Das Element und der Platz des Elements auf dem Bildschirm sind verschwunden. Dies ist die empfohlene Lösung unter dem Gesichtspunkt der Barrierefreiheit.




4. Transform

CSS Code
.transform {
  transform: translate(-9999px,-9999px);
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz Code angewendet transform: translate(-9999px,9999px):

Ergebnis: Der Hintergrund, der Text und der Rahmen sind verschwunden, aber nicht der Platz des Elements auf dem Bildschirm.




5. Transparent

CSS Code
.transparent {
  background-color: transparent;
  color: transparent;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz angewendet CSS-Klasse .transparent:

Ergebnis: Nur der Hintergrund und der Text sind verschwunden, nicht aber der Rand oder der Platz des Elements auf dem Bildschirm.

Man kann border: transparent anwenden, dann wird auch der Rand verschwinden.




6. Visibility

CSS Code
.visiblity-hidden {
  visiblity: hidden;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – next paragraph code applied visibility: hidden:

Ergebnis: Der Hintergrund, der Text und der Rahmen sind verschwunden, aber nicht der Platz des Elements auf dem Bildschirm. Achten Sie auf die Barrierefreiheit: Nicht alle Screenreader lesen ein Element mit visiblity: hidden.




7. Zero Pixels

a) font-size

CSS Code
.zero-font {
  font-size: 0;
  line-height: 0;
  margin: 0 !important;
  padding: 0 !important;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz angewendet CSS-Klasse .font-zero:

Ergebnis: Der Hintergrund und der Text sind verschwunden, aber nicht der Rahmen, und das Element nimmt immer noch etwas Platz auf dem Bildschirm ein.

Mann kann border: transparent anwenden oder borderüberhaupt nicht stylen, dann verschwindet auch der Rand. Aber auch hier bleibt etwas Platz auf dem Bildschirm übrig.


b) height and width

CSS Code
.height-width {
  height: 0;
  width: 0;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden;
}
Vorher

Code nicht angewendet

Code nicht angewendet

Nachher

Code nicht angewendet – nächster Absatz angewendet CSS-Klasse .height-width:

Ergebnis: Der Hintergrund, der Text und der Rahmen sind – bis auf einen kleinen Punkt – verschwunden, aber das Element nimmt immer noch etwas Platz auf dem Bildschirm ein.

Man kann border: transparent anwenden oder borderüberhaupt nicht stylen, dann verschwindet der Rand vollständig. Aber auch hier bleibt etwas Platz auf dem Bildschirm übrig.

Mit dem Firefox-Entwicklerwerkzeug Inspector können wir sehen, wo der Platz des nun unsichtbaren Textes geblieben ist: es ist der halbtransparente blaue Raum auf der linken Seite des Screenshots.

Screenshot from firefox dev tool to show the space of the 'invisible' text
Der Platz des unsichtbaren Textes sichtbar gemacht

Zusammenfassung

Es gibt keine allgemeine Empfehlung, welche Methode für welchen Zweck am besten geeignet ist.

Um HTML-Elemente ohne semantische oder inhaltliche Relevanz auszublenden, ist die Methode display: none wohl am besten geeignet.

Um HTML-Elemente auszublenden, sie aber für Screenreader zugänglich zu halten, wird die Methode Position empfohlen.

Die Methoden opacity und transform eignen sich gut für Bilder und Animationen.

Von der Methode zero pixels rate ich dringend ab; sie kann höchstens für Spezialfälle verwendet werden.

Die CSS-Eigenschaft content-visibility wird bislang nicht von vielen Browsern unterstützt, sodass ich sie hier nicht berücksichtige.

Ich berücksichtige ebenfalls nicht das globale HTML-Attribut hidden.


Diesen Artikel teilen