To pytanie jest bardzo martwe, ale dodaję komentarz, ponieważ niedawno znalazłem się w sytuacji, której mogą doświadczyć inni. Musiałem ukryć element , aby zachował swójoffsetTop , i display:noneustawiłbym offsetTopna 0. Moim rozwiązaniem było użycie, visibility: hiddena następnie ustawienie szerokości i wysokości na 0. Gdy potrzebowałem, aby element był ponownie widoczny, usunąłem trzy atrybuty za pomocą JavaScript. Trochę hacky rozwiązanie, ale działa dobrze dla prawie wszystkich przypadków użycia.
rappatic
Odpowiedzi:
301
Spróbuj ustawić, display:noneaby ukryć i ustawić, display:blockaby pokazać.
nie można usunąć elementu z dom man. korzystając z tej opcji również. przeczytaj pytanie
Pranay Rana
26
nie wszystkie elementy powinny być display: block, niektóre będą musiały być ustawione na display: inline(takie jak <span>lub <a>lub <img>elementy DOM).
Mauro
2
@pranay pytanie mówi, aby je ukryć, aby nie usuwać ich z DOM.
Mauro
6
@pranay: Pytanie nie jest zbyt dobrze wyrażone, ale Huusom rozwiązuje problem użytkownika.
Claudio Redi
1
Ulepszenie: utwórz klasę CSS o nazwie hiddenwith display: none. Dodaj klasę do elementu, aby go ukryć, usuń go pokaż. Podczas usuwania displaywłaściwość jest przywracana do domyślnego elementu.
Niestety nie działa to dla mnie - użycie displaya: żaden nie pozostawia pustego miejsca.
mbuc91
15
Użycie display:nonejest dobrą opcją tylko do usunięcia elementu, ALE zostanie ono również usunięte w przypadku czytników ekranu . Trwają również dyskusje, czy wpływa to na SEO. Jest dobry, krótki artykuł na ten temat na A List Apart
Jeśli naprawdę chcesz tylko ukryć, a nie usunąć element, lepiej użyj:
div {
position: absolute;
left:-999em;}
W ten sposób może być również czytany przez czytniki ekranu.
Jedyną wadą tej metody jest to, że ten DIV jest renderowany i może mieć wpływ na wydajność , szczególnie na telefony komórkowe.
jeśli zdecydujesz się ustawić coś absolutnego, z czym w większości przypadków możesz biegać visibility: hidden;, powiedzmy, że masz inne elementy absolutne, które nie będą powodować konfliktu dla przestrzeni, tylko konflikt z-index. Tylko za ukrywanie elementu, z którym bym poszedłvisibility
Dejan.S
10
Spójrz, zamiast używać visibility: hidden;use display: none;. Pierwsza opcja się ukryje, ale nadal zajmuje miejsce, a druga opcja się ukryje i nie zajmuje miejsca.
Odpowiedź na to pytanie brzmi: użyj display: none i display: block, ale to nie pomaga komuś, kto próbuje użyć przejść css do wyświetlania i ukrywania zawartości za pomocą właściwości visibility.
Doprowadziło mnie to również do szaleństwa, ponieważ użycie display zabija wszelkie przejścia css.
Jednym z rozwiązań jest dodanie tego do klasy korzystającej z widoczności:
overflow:hidden
Aby to zadziałało, zależy to od układu, ale powinno zachować pustą zawartość w div, w którym się znajduje.
Jeśli grasz z widocznością: ukryty i widocznością: widoczny i ustaw swoją pozycję elementu: naprawiono, nie będziesz miał tego problemu, to jest jak magia
John Balvin Arias
6
display: żadne nie jest rozwiązaniem, to całkowicie ukrywa elementy swoją przestrzenią.
Pyta o usunięcie go wizualnie, „jakby nie było ich w DOM”. Nie chodzi o usuwanie ich z rzeczywistego DOM.
Arve Systad
pytanie mówi, aby nie usuwać ich z DOM tylko po to, aby zniknęły. as though they are not in the DOM at all (but without actually removing them from the DOM)
Mauro
@pranay: visibility: hiddenzatrzymuje tylko wyświetlanie treści, ale nadal wykorzystuje przestrzeń pionową / poziomą, display: none usuwa przestrzeń pionową / poziomą dla elementu.
Mauro
Nie, nie ma. widoczność: ukryta; sprawia, że element jest niewidoczny, ale wciąż zajmuje miejsce. Nie wyświetla się; sprawia, że dokument zachowuje się tak, jakby nigdy go nie było.
Olly Hodgson
1
Usuń tę odpowiedź.
BalusC
3
Przełączanie displaynie pozwala na płynne przejścia CSS. Zamiast tego przełączaj oba visibilityprzyciski max-height.
Jest to przydatne podczas pracy z animacjami. Ponieważ chowamy element poza widocznym obszarem za pomocą czegoś podobnego transform: translateX(-100%). Nie chcemydisplay: none
zhuhang.jasper
2
oto inne podejście do przywracania ich po wyświetleniu: brak. nie używaj display: block / inline itp. Zamiast tego (jeśli używasz javascript) ustaw wyświetlanie właściwości css na '' (tj. puste)
offsetTop
, idisplay:none
ustawiłbymoffsetTop
na 0. Moim rozwiązaniem było użycie,visibility: hidden
a następnie ustawienie szerokości i wysokości na 0. Gdy potrzebowałem, aby element był ponownie widoczny, usunąłem trzy atrybuty za pomocą JavaScript. Trochę hacky rozwiązanie, ale działa dobrze dla prawie wszystkich przypadków użycia.Odpowiedzi:
Spróbuj ustawić,
display:none
aby ukryć i ustawić,display:block
aby pokazać.źródło
display: block
, niektóre będą musiały być ustawione nadisplay: inline
(takie jak<span>
lub<a>
lub<img>
elementy DOM).hidden
withdisplay: none
. Dodaj klasę do elementu, aby go ukryć, usuń go pokaż. Podczas usuwaniadisplay
właściwość jest przywracana do domyślnego elementu.zamiast tego użyj stylu
źródło
Użycie
display:none
jest dobrą opcją tylko do usunięcia elementu, ALE zostanie ono również usunięte w przypadku czytników ekranu . Trwają również dyskusje, czy wpływa to na SEO. Jest dobry, krótki artykuł na ten temat na A List ApartJeśli naprawdę chcesz tylko ukryć, a nie usunąć element, lepiej użyj:
W ten sposób może być również czytany przez czytniki ekranu.
Jedyną wadą tej metody jest to, że ten DIV jest renderowany i może mieć wpływ na wydajność , szczególnie na telefony komórkowe.
źródło
visibility: hidden;
, powiedzmy, że masz inne elementy absolutne, które nie będą powodować konfliktu dla przestrzeni, tylko konfliktz-index
. Tylko za ukrywanie elementu, z którym bym poszedłvisibility
Spójrz, zamiast używać
visibility: hidden;
usedisplay: none;
. Pierwsza opcja się ukryje, ale nadal zajmuje miejsce, a druga opcja się ukryje i nie zajmuje miejsca.źródło
Odpowiedź na to pytanie brzmi: użyj display: none i display: block, ale to nie pomaga komuś, kto próbuje użyć przejść css do wyświetlania i ukrywania zawartości za pomocą właściwości visibility.
Doprowadziło mnie to również do szaleństwa, ponieważ użycie display zabija wszelkie przejścia css.
Jednym z rozwiązań jest dodanie tego do klasy korzystającej z widoczności:
Aby to zadziałało, zależy to od układu, ale powinno zachować pustą zawartość w div, w którym się znajduje.
źródło
Historia o
display:none
ivisibility: hidden
visibility:hidden
oznacza, że tag nie jest widoczny, ale na stronie przydzielono mu miejsce.display:none
oznacza całkowicie ukrywa elementy swoją przestrzenią. (chociaż nadal możesz z nim wchodzić w interakcje za pośrednictwem DOM)źródło
display:none
ukryć i ustawićdisplay:block
do pokazania.źródło
as though they are not in the DOM at all (but without actually removing them from the DOM)
visibility: hidden
zatrzymuje tylko wyświetlanie treści, ale nadal wykorzystuje przestrzeń pionową / poziomą, display: none usuwa przestrzeń pionową / poziomą dla elementu.Przełączanie
display
nie pozwala na płynne przejścia CSS. Zamiast tego przełączaj obavisibility
przyciskimax-height
.źródło
transform: translateX(-100%)
. Nie chcemydisplay: none
oto inne podejście do przywracania ich po wyświetleniu: brak. nie używaj display: block / inline itp. Zamiast tego (jeśli używasz javascript) ustaw wyświetlanie właściwości css na '' (tj. puste)
źródło
ukrywa to zawartość, a także nie pozostawia pustej przestrzeni.
źródło
powyżej mojej wiedzy jest to możliwe na 4 sposoby
<button style="display:none;"></button>
#buttonId{ display:none; }
$('#buttonId').prop('display':'none');
&$("#buttonId").css('opacity', 0);
źródło
wyświetlanie: żaden nie jest najlepszą rzeczą, aby uniknąć zajmowania białych stron na stronie
źródło
Użyj,
!important
jeśli jesteś zmuszony zastąpić istniejące style CSS.źródło