Czy jest coś przeciwnego do wyświetlenia: brak?

197

Przeciwieństwem visibility: hiddenjest visibility: visible. Podobnie jest coś przeciwnegodisplay: none ?

Wiele osób wprawia w zakłopotanie zastanawianie się, jak pokazać element, gdy już jest display: none, ponieważ nie jest to tak jasne, jak użycie visibilitywłaściwości.

Mógłbym po prostu użyć visibility: hiddenzamiast display: none, ale to nie daje tego samego efektu, więc nie zamierzam z tym.

Mohammad Areeb Siddiqui
źródło
35
Nie jestem pewien, dlaczego to powoduje obniżenie głosów i zamknięcie wniosków. Jest na temat (obecnie jest 143 368 pytań CSS na temat przepełnienia stosu), jest to rzeczywisty problem i dobre pytanie, aby pomóc ludziom prawidłowo nauczyć się języka.
Paul D. Waite,
4
@Paul Może ludzie nie zauważyli, że jest to odpowiedź własna i uważali, że to niewielki wysiłek badawczy (ponieważ cały wysiłek badawczy jest w odpowiedzi)
Richard Tingle
11
Po co zawracać sobie głowę pytaniem, jeśli odpowiedzią jest skopiowanie / wklejenie tabeli z w3schools.com/cssref/pr_class_display.asp ?
Bill the Lizard
1
@RichardTingle: ah, dobra uwaga. @MohammadAreebSiddiq: aw, nie sądziłem, że twoja odpowiedź musi zostać usunięta. Usunięcie dużej listy wszystkich możliwych displaywartości byłoby w porządku. (I to tylko moja opinia, oczywiście: być może ludziom podobała się ta lista.)
Paul D. Waite,
naprawdę naprawdę powinieneś był zrobić odpowiedź Ilyi Streltsyn przyjętą. Ilya podaje „wersję” wyświetlacza: żadna z nich nie ma odwrotności, co rozwiązuje praktyczny problem leżący u podstaw twojego pytania, podczas gdy odpowiedź, którą wybrałeś, w istocie mówi tylko „nie”. Co z pewnością jest prawdą, ale o wiele znacznie mniej pomocne. To jest dla programistów, a nie dla lingwistów.
mathheadinclouds

Odpowiedzi:

177

display: nonenie ma dosłownego przeciwieństwa jak visibility:hiddenma.

visibilityWłasność decyduje, czy dany element jest widoczny, czy nie. Dlatego ma dwa stany (visible i hidden), które są sobie przeciwne.

displayNieruchomość jednak decyduje, jakie przepisy układu elementem będzie. Istnieje kilka różnych rodzajów reguł dla jak elementy będą układać się w CSS, więc istnieje kilka różnych wartości ( block, inline, inline-blockitd - patrz dokumentacja dla tych wartości tutaj ).

display:none usuwa element z układu strony całkowicie, jakby go nie było.

Wszystkie inne wartości displaypowodują, że element jest częścią strony, więc w pewnym sensie wszystkie są przeciwne display:none.

Ale nie ma jednej wartości, która jest bezpośrednią odwrotnością display:none- tak jak nie ma jednej fryzury, która byłaby przeciwieństwem „łysiny”.

Paul D. Waite
źródło
2
Zauważyłem, że wspomniałeś display: initialo usuniętej odpowiedzi własnej - w przypadku przeglądarek implementujących CSS 2.1 jest to synonim display: inline. Nie resetuje się displaydo domyślnych ustawień przeglądarki dla danego elementu - nie to oznacza „wartość początkowa”.
BoltClock
26
mój głos na „łysy” przykład :) Bardzo łatwy do zrozumienia przykład!
Jesper Rønn-Jensen
1
Całe czytanie Myślę sobie: „świetny przykład, tak, tak, wszystkie są przeciwne do display:none„ wtedy czytasz ”, tak jakby nie było żadnej fryzury, która byłaby przeciwna łysemu „ Wow plus 1, ładnie mówiąc.
Chef_Code
2
Każda fryzura jest przeciwieństwem łysiny.
AdjunctProfessorFalcon
@AdjunctProfessorFalcon: cóż, w pewnym sensie. Powiedziałbym, że ogolona głowa na pierwszym miejscu jest o wiele mniej przeciwieństwem łysa niż barwena.
Paul D. Waite,
84

Prawdziwe przeciwieństwo display: nonenie ma (jeszcze).

Ale display: unsetjest bardzo blisko i działa w większości przypadków.

Z MDN (Mozilla Developer Network):

Nieustawione słowo kluczowe CSS jest kombinacją słów kluczowych początkowych i dziedziczonych. Podobnie jak dwa inne słowa kluczowe w całym CSS, można go zastosować do dowolnej właściwości CSS, w tym do skrótu CSS wszystkich. To słowo kluczowe resetuje właściwość do wartości odziedziczonej, jeśli dziedziczy po rodzicu lub do wartości początkowej, jeśli nie. Innymi słowy, zachowuje się jak słowo kluczowe dziedziczące w pierwszym przypadku i jak początkowe słowo kluczowe w drugim przypadku.

(źródło: https://developer.mozilla.org/docs/Web/CSS/unset )

Należy również zauważyć, że display: revertjest obecnie opracowywany. Szczegóły w MDN .

RockPaperLizard
źródło
Co display: initial?
Flimm
31

Przy zmianie elementu displayw JavaScript, w wielu przypadkach odpowiednia opcja do „cofania” wynikiem element.style.display = "none"jest element.style.display = "". Spowoduje to usunięcie displaydeklaracji z styleatrybutu, przywracając rzeczywistą wartość displaywłaściwości do wartości ustawionej w arkuszu stylów dla dokumentu (do domyślnej przeglądarki, jeśli nie zostanie zdefiniowana w innym miejscu). Ale bardziej niezawodnym podejściem jest posiadanie klasy w stylu CSS

.invisible { display: none; }

i dodawanie / usuwanie tej nazwy klasy do / z element.className.

Ilya Streltsyn
źródło
2
Jeśli chcesz przesłonić .element { display: none }(zdefiniowane na przykład w bibliotece CSS lib), .element { display: '' !important }nie będzie działać. Musisz użyć.element { display: unset !important }
tanguy_k
2
Mówiłem o „cofnięciu” display:nonetylko w JavaScript. Oczywiście pusty ciąg nie będzie działał w CSS, ponieważ jest to niepoprawna wartość. Jednak display: unsetsugerujesz, że nie przywrócisz, np. Domyślny display:blockdla a <div>lub domyślny display:table-rowdla a <tr>, to skutecznie zamienia wszystko display:inline(tak jak display:initial). Aby przywrócić domyślną wartość przeglądarki dla elementu, istnieje display:revert, ale nie jest ona dobrze obsługiwana ( caniuse.com/#feat=css-revert-value ).
Ilya Streltsyn
To powinna być zaakceptowana odpowiedź. Przyjęta odpowiedź ma dobre porównanie z „przeciwieństwem łysiny”, ale nic nie pomaga biednemu programistom w radzeniu sobie z implementacją „uczyń łysego” - „teraz odłóż włosy”. Ta odpowiedź pokazuje, jak poradzić sobie z tym praktycznym problemem. Element.style.display = '' jest podatny na błędy, ponieważ „stare włosy” mogą nie być domyślnym wyświetlaczem, ale „blokiem” lub „komórką tabeli” lub czymkolwiek innym. Usunięcie klasy „.invisible”, jak tutaj, jest, o ile widzę, jedyną bezbłędną implementacją „odłóż włosy z powrotem”. Więc rób to w ten sposób, zawsze
mathheadinclouds
6

możesz użyć

display: normal;

Działa normalnie .... Jest to małe hackowanie w css;)

indera
źródło
2
Dlaczego jest to przegłosowane? Czy to zły sposób na zrobienie tego? Działa dobrze na stołach, ale czy powinienem użyć czegoś innego?
Benjamin Karlog,
4
Wartość „normal” nie jest prawidłową wartością displaywłaściwości, więc jest po prostu ignorowana i skutecznie działa jak element.style.display = ''przypisanie (patrz moja odpowiedź powyżej).
Ilya Streltsyn
27
innymi słowy, mógłbyś użyć display: chunk norris;tego samego efektu przy odrobinie kopnięcia.
Kevin B,
1
Jeśli chcesz przesłonić .element { display: none }(zdefiniowane na przykład w bibliotece CSS lib), .element { display: normal !important }nie będzie działać. Musisz użyć.element { display: unset !important }
tanguy_k
4

Używam display:block; To działa dla mnie

Pradeep Behera
źródło
Przydaje się to tylko w przypadku elementów, które mają być wyświetlane block, ponieważ ogólnie nie jest to, co chcesz, dla inlineelementu takiego jak <span>na przykład.
Flimm
3

Jak wyjaśnia Paul, nie ma dosłownego przeciwieństwa wyświetlania: żaden w HTML, ponieważ każdy element ma inny domyślny sposób wyświetlania, a także można zmienić sposób wyświetlania za pomocą klasy lub stylu wbudowanego itp.

Jednak jeśli użyjesz czegoś takiego jak jQuery, ich funkcje show i hide zachowują się tak, jakby nie istniało przeciwieństwo wyświetlania none. Gdy się ukryjesz, a następnie ponownie wyświetlisz element, wyświetli się dokładnie w taki sam sposób, jak przed ukrywaniem. Robią to, przechowując starą wartość właściwości display podczas ukrywania elementu, aby po ponownym wyświetleniu wyświetlał się w taki sam sposób, jak przed ukrywaniem. https://github.com/jquery/jquery/blob/740e190223d19a114d5373758127285d14d6b71e/src/css.js#L180

Oznacza to, że jeśli ustawisz na przykład div, aby wyświetlał się w tekście lub w wierszu, i ukryjesz go, a następnie pokażesz ponownie, będzie on ponownie wyświetlany jako wyświetlany w wierszu lub w wierszu tak, jak poprzednio

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

scenariusz:

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

Zauważ, że właściwość display div pozostanie stała nawet po jej ukryciu (display: none) i wyświetleniu ponownie.

użytkownik3589536
źródło
1
„display: table-cell” był tym, którego potrzebowałem. Nie wspomniano w żadnej innej odpowiedzi.
bendecko
1

W przypadku arkusza stylów przyjaznego dla drukarki używam:

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

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

Użyłem tego, gdy potrzebowałem wydrukować formularz zawierający wartości, a pola wejściowe były trudne do wydrukowania. Dodałem więc wartości zawinięte w tag span.print_only (div.print_only użyto gdzie indziej), a następnie zastosowałem klasę .no_print do pól wejściowych. Tak więc na ekranie zobaczysz pola wprowadzania, a po wydrukowaniu tylko wartości. Jeśli chcesz się zachwycić, możesz użyć JS do aktualizacji wartości w znacznikach span, gdy pola zostały zaktualizowane, ale w moim przypadku nie było to konieczne. Być może nie jest to najbardziej eleganckie rozwiązanie, ale zadziałało dla mnie!

TonyP
źródło
1

Możesz użyć display: block

Przykład:

<!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
źródło
0

Zetknąłem się z tym wyzwaniem, budując aplikację, w której chciałem ukryć tabelę dla niektórych użytkowników, ale nie dla innych.

Początkowo ustawiłem go jako display: none ale display: inline-block dla tych użytkowników, których chciałem zobaczyć, ale wystąpiły problemy z formatowaniem, których można się spodziewać (konsolidacja kolumn lub ogólnie bałagan).

W ten sposób obejrzałem najpierw tabelę, a następnie „wyświetl: brak” dla użytkowników, których nie chciałem widzieć. W ten sposób sformatował się normalnie, ale potem zniknął w razie potrzeby.

Trochę rozwiązania bocznego, ale może komuś pomóc!

Andrew Sainsbury
źródło
0

przeciwieństwo „none” to „flex” podczas pracy z React Native.

NEELAMADHAB
źródło
-2

widoczność: ukryty ukryje element, ale element należy do DOM. A w przypadku wyświetlania: brak usunie element z DOM.

Możesz więc ukryć lub odkryć element. Ale kiedy go usuniesz (mam na myśli brak wyświetlania), nie ma wyraźnej przeciwnej wartości. display ma kilka wartości, takich jak display: block, display: inline, display: inline-block i wiele innych. możesz to sprawdzić w W3C.

Hardik Sondagar
źródło
2
Dlaczego nie ma żadnej z innych wartości display?
Paul D. Waite,
1
Czy to ma być wyczerpująca lista? To nie jest.
Ry-
-3

Możesz użyć tego, display:block;a także dodaćoverflow:hidden;

Bel
źródło
1
Proszę przeczytać istniejące odpowiedzi, zanim włączysz własne. Istnieje dobra, dobrze oceniona i zaakceptowana odpowiedź z maja ubiegłego roku, a także odpowiedź z ujemną liczbą głosów, która jest mniej więcej identyczna z twoją.
Quentin
Widziałem odpowiedź. Display: Unset nie działa tak samo jak blok Display:. Moja opinia :) @Quentin
Bel
I display: blocknie działa dobrze na… <span>lub <td>… a poprzednia odpowiedź już wspomniała display: block.
Quentin,
2
Zredagowałeś odpowiedź, aby wspomnieć overflow: hidden. Czemu? Po co to dodawać? Nie ma to nic wspólnego z cofaniem display: none.
Quentin,
-4

Najlepszym „przeciwieństwem” byłoby przywrócenie wartości domyślnej, która wynosi:

display: inline
TimNguyenBSM
źródło
Chcę tylko wyjaśnić, że właściwość display nie ma wartości domyślnej, jednak element html ma. Domyślna wartość DIV to display: block, SPAN domyślnie wyświetla się: inline. Ale sama właściwość display nie ma wartości domyślnej.
kevinius