Gibt es ein Gegenteil zu zeigen: keines?

196

Das Gegenteil von visibility: hiddenist visibility: visible. Gibt es auch ein Gegenteil für display: none?

Viele Menschen sind verwirrt, wenn sie herausfinden, wie ein Element angezeigt werden soll, wenn es vorhanden ist display: none, da dies nicht so klar ist wie die Verwendung der visibilityEigenschaft.

Ich könnte nur visibility: hiddenanstelle von verwenden display: none, aber es gibt nicht den gleichen Effekt, also gehe ich nicht damit.

Mohammad Areeb Siddiqui
quelle
35
Ich bin mir nicht sicher, warum dies zu Abstimmungen und engen Anfragen führt. Es ist themenbezogen (es gibt derzeit 143.368 CSS-Fragen zum Stapelüberlauf), es ist ein reales Problem und es ist eine gute Frage, um Menschen zu helfen, die Sprache richtig zu lernen.
Paul D. Waite
4
@ Paul Vielleicht haben die Leute nicht bemerkt, dass es eine Selbstantwort war und dachten, es sei ein geringer Forschungsaufwand (weil der gesamte Forschungsaufwand in der Antwort enthalten ist)
Richard Tingle
11
Warum sollten Sie sich die Mühe machen, eine Frage zu stellen, wenn Sie eine Tabelle aus w3schools.com/cssref/pr_class_display.asp kopieren / einfügen möchten ?
Bill the Lizard
1
@ RichardTingle: Ah, guter Punkt. @MohammadAreebSiddiq: Oh, ich dachte nicht, dass deine Antwort gelöscht werden muss. Nur die große Liste aller möglichen displayWerte zu entfernen , wäre in Ordnung gewesen. (Und das ist natürlich nur meine Meinung: Vielleicht haben die Leute diese Liste wirklich gemocht.)
Paul D. Waite
Sie hätten Ilya Streltsyns Antwort wirklich zur akzeptierten machen sollen. Ilya gibt eine "Version" der Anzeige an: Keine, die ein Gegenteil hat, das das praktische Problem löst, das Ihrer Frage zugrunde liegt, während die Antwort, die Sie akzeptiert haben, im Wesentlichen nur "Nein" sagt. Was sicher stimmt, aber viel, viel, viel weniger hilfreich ist. Dies ist für Programmierer, nicht für Linguisten.
Mathheadinclouds

Antworten:

176

display: nonehat kein wörtliches Gegenteil wie visibility:hidden.

Die visibilityEigenschaft entscheidet, ob ein Element sichtbar ist oder nicht. Es hat also zwei Zustände ( visibleund hidden), die einander entgegengesetzt sind.

Die displayEigenschaft entscheidet jedoch, welchen Layoutregeln ein Element folgt. Es gibt verschiedene Arten von Regeln, wie Elemente selbst auslegen wird in CSS, so gibt es verschiedene Werte ( block, inline, inline-blockusw. - finden Sie in der Dokumentation für diese Werte hier ).

display:none Entfernt ein Element vollständig aus dem Seitenlayout, als wäre es nicht vorhanden.

Alle anderen Werte für displaybewirken, dass das Element Teil der Seite ist, sodass sie in gewissem Sinne alle entgegengesetzt sind display:none.

Aber es gibt keinen Wert, von dem das direkte Gegenteil ist display:none- genau wie es keine Frisur gibt, die das Gegenteil von "Glatze" ist.

Paul D. Waite
quelle
2
Ich display: initialstelle fest, dass Sie in der gelöschten Selbstantwort erwähnt haben - für Browser, die CSS2.1 implementieren, ist dies gleichbedeutend mit display: inline. Es wird nicht displayauf die Browser-Standardeinstellung für ein bestimmtes Element zurückgesetzt - das bedeutet nicht "Anfangswert".
BoltClock
26
meine Stimme für das 'kahle' Beispiel :) Sehr leicht verständliches Beispiel!
Jesper Rønn-Jensen
1
Das ganze durchgelesen denke ich mir selbst "tolles Beispiel, yep, yep, sie sind alle entgegengesetzt zu display:none" dann liest du "so als gäbe es keine Frisur, die das Gegenteil von kahl ist " Wow plus 1, schön ausgedrückt.
Chef_Code
2
Jede Frisur ist das Gegenteil von Glatze.
AdjunctProfessorFalcon
@AdjunctProfessorFalcon: Nun, irgendwie. Ich würde sagen, ein Kopf, der bei Nummer eins rasiert wurde, ist viel weniger das Gegenteil von Glatze als eine Meeräsche.
Paul D. Waite
83

Ein wahres Gegenteil dazu display: nonegibt es (noch) nicht.

Ist display: unsetaber sehr nah und funktioniert in den meisten Fällen.

Von MDN (Mozilla Developer Network):

Das nicht gesetzte CSS-Schlüsselwort ist die Kombination aus dem anfänglichen und dem geerbten Schlüsselwort. Wie diese beiden anderen CSS-weiten Schlüsselwörter kann es auf jede CSS-Eigenschaft angewendet werden, einschließlich der CSS-Kurzform all. Dieses Schlüsselwort setzt die Eigenschaft auf ihren geerbten Wert zurück, wenn sie von ihrem übergeordneten Wert erbt, oder auf ihren Anfangswert, wenn nicht. Mit anderen Worten, es verhält sich im ersten Fall wie das geerbte Schlüsselwort und im zweiten Fall wie das ursprüngliche Schlüsselwort.

(Quelle: https://developer.mozilla.org/docs/Web/CSS/unset )

Beachten Sie auch, dass display: revertderzeit entwickelt wird. Siehe MDN für Details.

RockPaperLizard
quelle
Was ist mit display: initial?
Flimm
31

Wenn das Element der Wechsel displayin Javascript, in vielen Fällen eine geeignete Option ‚Undo‘ das Ergebnis element.style.display = "none"ist element.style.display = "". Dadurch wird die displayDeklaration aus dem styleAttribut entfernt und der tatsächliche Wert der displayEigenschaft auf den im Stylesheet für das Dokument festgelegten Wert zurückgesetzt (auf die Standardeinstellung des Browsers, wenn diese nicht an anderer Stelle neu definiert wurde). Der zuverlässigere Ansatz ist jedoch, eine Klasse in CSS zu haben

.invisible { display: none; }

und Hinzufügen / Entfernen dieses Klassennamens zu / von element.className.

Ilya Streltsyn
quelle
2
Wenn Sie damit überschreiben möchten .element { display: none }(z. B. in der CSS-Bibliothek definiert), .element { display: '' !important }funktioniert dies nicht. Sie müssen verwenden.element { display: unset !important }
tanguy_k
2
Ich habe display:nonenur in JavaScript über "Rückgängigmachen" berichtet . Natürlich funktioniert die leere Zeichenfolge in CSS nicht, da es sich um den ungültigen Wert handelt. Hovewer, display: unsetSie schlagen vor, nicht wiederherzustellen, z. B. die Standardeinstellung display:blockfür a <div>oder die Standardeinstellung display:table-rowfür a <tr>, es verwandelt effektiv alles in display:inline(genau wie display:initial). Um den Browser-Standardwert für das Element wiederherzustellen, gibt es einen display:revert, der jedoch nicht gut unterstützt wird ( caniuse.com/#feat=css-revert-value ).
Ilya Streltsyn
Dies sollte die akzeptierte Antwort sein. Die akzeptierte Antwort hat einen guten Vergleich mit "Gegenteil von Glatze", hilft aber dem armen Programmierer nicht, sich mit der Implementierung von "Glatze machen" befassen zu müssen - "Jetzt Haare zurücklegen". Diese Antwort zeigt Ihnen, wie Sie mit diesem praktischen Problem umgehen können. Element.style.display = '' ist fehleranfällig, da das "alte Haar" möglicherweise nicht die Standardanzeige ist, sondern "Block" oder "Tabellenzelle" oder was auch immer. Das Entfernen der Klasse ".invisible", wie hier, ist meines Erachtens die einzige fehlerfreie Implementierung von "Haare jetzt zurücklegen". Also, mach es immer so
mathheadinclouds
6

Sie können verwenden

display: normal;

Es funktioniert wie gewohnt .... Es ist ein kleines Hacken in CSS;)

Indera
quelle
2
Warum wird das abgelehnt? Ist das ein schlechter Weg oder? Es funktioniert gut für Tablerows, aber sollte ich etwas anderes verwenden?
Benjamin Karlog
4
Der Wert 'normal' ist kein gültiger Wert für die displayEigenschaft, wird also einfach ignoriert und funktioniert effektiv wie eine element.style.display = ''Zuweisung (siehe meine Antwort oben).
Ilya Streltsyn
27
Mit anderen Worten, Sie hätten display: chunk norris;den gleichen Effekt mit etwas mehr Kick erzielen können.
Kevin B
1
Wenn Sie damit überschreiben möchten .element { display: none }(z. B. in der CSS-Bibliothek definiert), .element { display: normal !important }funktioniert dies nicht. Sie müssen verwenden.element { display: unset !important }
tanguy_k
4

Ich benutze display:block; es funktioniert bei mir

Pradeep Behera
quelle
Dies ist nur für Elemente nützlich, als die Sie angezeigt werden möchten. blockEs ist nicht das, was Sie allgemein für ein inlineElement wie <span>beispielsweise möchten .
Flimm
3

Wie Paul erklärt, gibt es kein wörtliches Gegenteil von Anzeige: keine in HTML, da jedes Element eine andere Standardanzeige hat und Sie die Anzeige auch mit einer Klasse oder einem Inline-Stil usw. ändern können.

Wenn Sie jedoch so etwas wie jQuery verwenden, verhalten sich die Funktionen zum Ein- und Ausblenden so, als gäbe es ein Gegenteil von "Keine anzeigen". Wenn Sie ein Element ausblenden und dann wieder anzeigen, wird es genauso angezeigt wie vor dem Ausblenden. Dazu speichern sie den alten Wert der Anzeigeeigenschaft beim Ausblenden des Elements, sodass es beim erneuten Anzeigen genauso angezeigt wird wie vor dem Ausblenden. https://github.com/jquery/jquery/blob/740e190223d19a114d5373758127285d14d6b71e/src/css.js#L180

Dies bedeutet, dass, wenn Sie ein div beispielsweise so einstellen, dass es Inline oder Inline-Block anzeigt und Sie es ausblenden und dann erneut anzeigen, es erneut als Inline- oder Inline-Block angezeigt wird, wie es zuvor war

<div style="display:inline" >hello</div>
<div style="display:inline-block">hello2</div>
<div style="display:table-cell" >hello3</div>

Skript:

  $('a').click(function(){
        $('div').toggle();
    });

Beachten Sie, dass die Anzeigeeigenschaft des div auch dann konstant bleibt, wenn es ausgeblendet (Anzeige: keine) und erneut angezeigt wurde.

user3589536
quelle
1
"display: table-cell" war das, was ich brauchte. Wurde bei keiner anderen Antwort erwähnt.
Bendecko
1

Im Fall eines druckerfreundlichen Stylesheets verwende ich Folgendes:

/* screen style */
.print_only { display: none; }

/* print stylesheet */
div.print_only { display: block; }
span.print_only { display: inline; }
.no_print { display: none; }

Ich habe dies verwendet, als ich ein Formular mit Werten drucken musste und die Eingabefelder schwer zu drucken waren. Also habe ich die Werte in ein span.print_only-Tag eingefügt (div.print_only wurde an anderer Stelle verwendet) und dann die .no_print-Klasse auf die Eingabefelder angewendet. Auf dem Bildschirm sehen Sie also die Eingabefelder und beim Drucken nur die Werte. Wenn Sie Lust haben, können Sie JS verwenden, um die Werte in den Span-Tags zu aktualisieren, wenn die Felder aktualisiert wurden, aber das war in meinem Fall nicht erforderlich. Vielleicht nicht die eleganteste Lösung, aber es hat bei mir funktioniert!

TonyP
quelle
1

Sie können display: block verwenden

Beispiel:

<!DOCTYPE html>
<html>
<body>

<p id="demo">Lorem Ipsum</p>

<button type="button" 
onclick="document.getElementById('demo').style.display='none'">Click Me!</button>
<button type="button" 
onclick="document.getElementById('demo').style.display='block'">Click Me!</button>

</body>
</html> 
Adeetya Kulkarni
quelle
0

Ich bin auf diese Herausforderung gestoßen, als ich eine App erstellt habe, in der eine Tabelle für bestimmte Benutzer ausgeblendet werden soll, für andere jedoch nicht.

Anfangs habe ich es als Anzeige eingerichtet: keine, aber dann Anzeige: Inline-Block für die Benutzer, die ich sehen wollte, aber ich hatte die Formatierungsprobleme, die Sie möglicherweise erwarten (Spalten konsolidieren oder im Allgemeinen chaotisch).

Ich habe es umgangen, indem ich zuerst die Tabelle angezeigt und dann "display: none" für die Benutzer ausgeführt habe, die ich nicht sehen wollte. Auf diese Weise wurde es normal formatiert, verschwand jedoch nach Bedarf.

Eine Art laterale Lösung, könnte aber jemandem helfen!

Andrew Sainsbury
quelle
0

Das Gegenteil von 'none' ist 'flex' während der Arbeit mit React Native.

NEELAMADHAB
quelle
-2

Sichtbarkeit: versteckt versteckt das Element, aber das Element ist das mit DOM. Und im Falle einer Anzeige: keine, wird das Element aus dem DOM entfernt.

Sie haben also die Möglichkeit, das Element entweder ein- oder auszublenden. Aber sobald Sie es löschen (ich meine Anzeige keine), hat es keinen eindeutigen Gegenwert. Anzeige haben mehrere Werte wie Anzeige: Block, Anzeige: Inline, Anzeige: Inline-Block und viele andere. Sie können es von W3C aus überprüfen.

Hardik Sondagar
quelle
2
Warum nicht einer der anderen Werte für display?
Paul D. Waite
1
Soll das eine umfassende Liste sein? Es ist nicht.
Ry-
-3

Sie können dies verwenden display:block;und auch hinzufügenoverflow:hidden;

Bel
quelle
1
Bitte lesen Sie die vorhandenen Antworten, bevor Sie Ihre eigenen beitragen. Es gibt eine gute, gut abgestimmte und akzeptierte Antwort vom letzten Mai und es gibt auch eine Antwort mit einer negativen Gesamtzahl von Stimmen , die mehr oder weniger mit Ihrer identisch ist.
Quentin
Ich habe die Antwort gesehen. Anzeige: Nicht gesetzt funktioniert nicht so gut wie ein Anzeige: Block. Meine Meinung :) @Quentin
Bel
Und display: blockfunktioniert nicht gut auf einem <span>oder einem <td>... und eine vorherige Antwort hat bereits erwähnt display: block.
Quentin
2
Sie haben die zu erwähnende Antwort bearbeitet overflow: hidden. Warum? Was bringt es, das hinzuzufügen? Es hat nichts damit zu tun, a rückgängig zu machen display: none.
Quentin
-4

Das beste "Gegenteil" wäre, es auf den Standardwert zurückzusetzen, der ist:

display: inline
TimNguyenBSM
quelle
Ich möchte nur klarstellen, dass die Anzeigeeigenschaft keinen Standardwert hat, das HTML-Element jedoch. Der Standardwert eines DIV wäre display: block, ein SPAN würde standardmäßig anzeigen: inline. Die Anzeigeeigenschaft allein hat jedoch keinen Standardwert.
Kevinius