Hat Deckkraft: 0 genau den gleichen Effekt wie Sichtbarkeit: versteckt

119

Wenn ja, wird die visibilityImmobilie effektiv verworfen ?

(Mir ist klar, dass Internet Explorer diese CSS2-Eigenschaft noch nicht unterstützt.)
Vergleiche von Layout-Engines

Siehe auch: Was ist der Unterschied zwischen Sichtbarkeit: versteckt und Anzeige: keine

Chris Noe
quelle
4
Und wie wäre es mit Taborder? Wenn sichtbar = falsch, erhält das Steuerelement keinen Fokus, aber wenn die Deckkraft 0 ist, iteriert die Tabulatortaste möglicherweise immer noch zwischen den Steuerelementen?
Stefan
Es wäre ein interessanter Testfall, um zu sehen, wie ein transparentes Steuerelement den Fokus erhalten könnte.
Chris Noe
3
Das habe ich versucht (FF3). Ein Eingabeelement mit der Deckkraft: 0 erhält laut Taborder den Fokus, obwohl keine visuelle Anzeige vorhanden ist. Der Cursor verschwindet einfach. Was auch immer Sie eingeben, wird in den Wert des Eingabeelements eingegeben. Durch erneutes Drücken der Tabulatortaste gelangen Sie zum nächsten Feld. Interessant.
Chris Noe

Antworten:

256

Hier finden Sie eine Zusammenstellung verifizierter Informationen aus den verschiedenen Antworten.

Jede dieser CSS-Eigenschaften ist einzigartig. Sie machen ein Element nicht nur nicht sichtbar, sondern haben auch die folgenden zusätzlichen Effekte:

  1. Reduziert den Platz, den das Element normalerweise einnehmen würde
  2. Reagiert auf Ereignisse (z. B. Klicken, Tastendruck)
  3. Nimmt am Taborder teil
                     Kollaps Ereignisse Taborder
Deckkraft: 0 Nein Ja Ja
Sichtbarkeit: versteckt Nein Nein Nein
Sichtbarkeit: Zusammenbruch Ja * Nein Nein
Anzeige: keine Ja Nein Nein

* Ja innerhalb eines Tabellenelements, sonst Nein.
Chris Noe
quelle
Ich habe versucht, der Markdown-Dokumentation hier zu folgen: daringfireball.net/projects/markdown/syntax
Chris Noe
Okay, SO unterstützt <table> absichtlich nicht. Also habe ich es ascii gemacht.
Chris Noe
3
Außerdem werden mit "Deckkraft: 0" Flash-Objekte gerendert und der Sprite-Konstruktor wird ausgelöst, mit "Sichtbarkeit: versteckt" jedoch nicht.
Pepkin88
Wenn Ihre Funk- / Kontrollkästchen nicht funktionieren visibility:hidden, müssen Sie sie opacity: 0stattdessen verwenden, um den Mausklick zu erkennen.
Dayuloli
7
@ ChrisNoe: Danke für die Zusammenfassung. Eine Sache, die Sie vielleicht hinzufügen möchten: Ich habe gerade untersucht, wie ein übergeordneter Knoten unsichtbar gemacht werden kann, aber untergeordnete Knoten weiterhin sichtbar sind. Das Ergebnis: Keine Chance für sichtbare Kinder: opacity:0 oder display:none, aber wenn Sie verwenden visibility: hidden , können Sie Kinder sichtbar machen mitvisibility: visible
Martin
14

Nein.

Elemente mit Deckkraft erstellen einen neuen Stapelkontext.

Auch die CSS-Spezifikation definiert dies nicht, aber Elemente mit können opacity:0angeklickt werden und Elemente mit visibility:hiddennicht.

Kornel
quelle
12

Nein, tut es nicht. Es gibt einen großen Unterschied. Sie sind ähnlich, da Sie durch das Element sehen können, ob die Sichtbarkeit ausgeblendet ist oder die Deckkraft 0 ist

Deckkraft: 0 : Sie können nicht auf Elemente dahinter klicken .

Sichtbarkeit: versteckt : Sie können auf Elemente dahinter klicken .

Nishant
quelle
1
"Nein, tut es nicht"? Ist dies als Antwort auf die Frage oder als Antwort auf eine der vorhandenen Antworten gedacht? Wenn es das spätere ist, sollte es als Kommentar unter der Antwort hinzugefügt werden, die es adressiert.
Chris Noe
9
Dies ist eine Antwort auf "Hat Opazität: 0 genau den gleichen Effekt wie Sichtbarkeit: versteckt?" .... war das nicht offensichtlich?
Nishant
5

Es gibt viele Unterschiede zwischen visibilityund opacity. Die meisten Antworten erwähnen einige Unterschiede, aber hier ist eine vollständige Liste.

  1. Die Deckkraft erbt nicht, die Sichtbarkeit jedoch nicht

  2. Die Deckkraft ist animierbar, die Sichtbarkeit jedoch nicht.
    (Nun, technisch gesehen ist es das, aber es ist einfach kein Verhalten definiert, das beispielsweise für "37% kollabiert und 63% versteckt" definiert ist. Sie können dies also als nicht animierbar betrachten.)

  3. Mit der Deckkraft können Sie ein untergeordnetes Element nicht undurchsichtiger als sein übergeordnetes Element machen. ZB wenn Sie ap mit Farbe: schwarz und Deckkraft: 0,5 haben, können Sie keines seiner Kinder vollständig schwarz machen. Gültige Werte für die Deckkraft liegen zwischen 0 und 1, und dieses Beispiel würde 2 erfordern!
    Folglich können Sie laut Martins Kommentar ein sichtbares Kind (mit Sichtbarkeit: sichtbar) in einem unsichtbaren Elternteil (mit Sichtbarkeit: versteckt) haben. Dies ist mit Deckkraft unmöglich; wenn ein Elternteil Deckkraft hat: 0; seine Kinder sind immer unsichtbar.

  4. In Kornels Antwort wird erwähnt, dass Opazitätswerte unter 1 einen eigenen Stapelkontext erstellen. Kein Wert für die Sichtbarkeit.
    (Ich wünschte, ich könnte mir eine Möglichkeit vorstellen, dies zu demonstrieren, aber ich kann mir keine Möglichkeit vorstellen, den Stapelkontext einer Sichtbarkeit zu zeigen: verstecktes Element.)

  5. Laut Philnashs Antwort werden Elemente mit einer Deckkraft von 0 immer noch von Bildschirmleseprogrammen gelesen, während sie sichtbar sind: versteckte Elemente nicht.

  6. Laut der Antwort von Chris Noe verfügt die Sichtbarkeit über mehr Optionen (z. B. Reduzieren) und Elemente, die nicht sichtbar sind, reagieren nicht mehr auf Klicks und können nicht mit Registerkarten versehen werden.

(Dies zu einem Community-Wiki zu machen, da es sonst nicht fair wäre, sich die vorhandenen Antworten zu leihen.)

Herr Lister
quelle
4

Ich bin mir nicht ganz sicher, aber ich denke, Bildschirmleser lesen keine Dinge, die auf versteckte Sichtbarkeit eingestellt sind, aber sie können Dinge unabhängig von ihrer Deckkraft lesen.

Das ist der einzige Unterschied, den ich mir vorstellen kann.

Philnash
quelle
Wie würde sich das dann auf das Ergebnis auswirken? Vielleicht in Bezug auf das, was im DOM enthalten ist? Meine Testfälle zeigen, dass Mozilla die Sichtbarkeit nicht wegwirft: versteckte Elemente.
Chris Noe
Die Elemente befinden sich unabhängig vom CSS-Stil im DOM. Ich meine, blinde Benutzer, die Bildschirmlese-Software verwenden, können Text in der Deckkraft: 0-Element vorlesen, während dies nicht der Fall wäre, wenn dasselbe Element sichtbar wäre: versteckt. Es ist wirklich ein Problem der Barrierefreiheit, da das Ergebnis anders ist.
Philnash
Nützlicher Punkt, es ist eines der Ergebnisse der Einstellung der Sichtbarkeit auf versteckt, aber dies ist nur die Spitze des Eisbergs. Insbesondere Sichtbarkeit: Verborgen lässt es (scheinbar) aus dom verschwinden, während das Layout auf der Seite beibehalten wird.
Nishant
4

Ich bin mir nicht ganz sicher, aber so mache ich Cross-Browser-Transparenz:

opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);

Objekte mit Sichtbarkeit: Versteckt haben noch Form, sie sind nur nicht sichtbar. Elemente mit einer Deckkraft von Null können weiterhin angeklickt werden und auf andere Ereignisse reagieren.

Andrew Bullock
quelle
Was bedeutet es, Form zu haben und unsichtbar zu sein?
Chris Noe
@chris, es bedeutet, dass sie immer noch den Platz auf der Seite einnehmen
Mitchel Sellers
2
Die Deckkraft wird verwendet, um zu entscheiden, wie das Element auf dem Hintergrund gezeichnet wird. Wenn opactiy auf 0 gesetzt ist, nimmt das Element natürlich Platz ein, aber es wird nichts gezeichnet, da 0% der Elementfarbe mit 100% des Hintergrunds gemischt werden, was dazu führt, dass nichts Neues erscheint. Versteckte und ähnliche Freunde bedeuten, dass das Element beim Zeichnen übersprungen wird.
mP.
2

Bei der Erstellung eines Benutzerstils, der Elemente in a beeinflusst contenteditable, ist mir aufgefallen, dass visibility: hiddendas Eingabe-Caret nicht wirklich mit ihm interagieren möchte , wenn Sie etwas festlegen . ZB wenn du hast

<div contenteditable><span style='visibility: hidden;'></span></div>

... dann scheint es, wenn Sie dieses div / span fokussieren, können Sie es nicht wirklich eingeben. Während mit opacity: 0es scheint, können Sie. Ich habe dies nicht ausführlich getestet, aber ich dachte, es wäre erwähnenswert, dies hier zu erwähnen, da niemand auf dieser Seite über die Auswirkungen auf die Texteingabe gesprochen hat. Dies scheint jedoch möglicherweise mit den oben erwähnten Ereignissen zu tun zu haben.

MalcolmOcean
quelle
0

Was Phil sagt, ist wahr.

IE unterstützt jedoch die Deckkraft:

filter:alpha(opacity=0);
Diodeus - James MacFarlane
quelle
0

Die Eigenschaften haben unterschiedliche semantische Bedeutungen. Während semantisches CSS so klingt, als ob es albern wäre, hat es, wie andere Benutzer erwähnt haben, Auswirkungen auf Geräte wie Bildschirmleseprogramme - wobei Semantik die Zugänglichkeit einer Seite beeinflusst.

Zack der Mensch
quelle