Czy istnieje sposób w jQuery, w którym mogę ukryć element, ale nie zmienić DOM, gdy jest on ukryty? Ukrywam pewien element, ale kiedy jest ukryty, elementy pod nim przesuwają się w górę. Nie chcę, żeby to się stało. Chcę, aby przestrzeń pozostała taka sama, ale element ma być pokazywany / ukrywany do woli.
Mogę to zrobić?
Odpowiedzi:
Zamiast
hide()
używać:hide()
ustawiadisplay
styl nanone
, co całkowicie usuwa element z przepływu dokumentu i powoduje, że nie zajmuje on miejsca.visibility:hidden
utrzymuje przestrzeń taką, jaka jest.źródło
css('visibility','visible')
css('visibility', '')
Spróbuj ustawić
visibility
nahidden
:źródło
display: none;
usunie go z przepływu treści, dzięki czemu zobaczysz, jak inne treści zostaną przeniesione do pustej przestrzeni. (display: block;
przenosi go z powrotem do strumienia, wypychając wszystko z drogi).visibility: hidden;
utrzyma go w strumieniu treści, zajmując miejsce, ale po prostu sprawi, że będzie niewidoczny. (visibility: visible;
ujawni to ponownie.)Będziesz chciał użyć,
visibility
jeśli chcesz, aby przepływ treści pozostał niezmieniony.źródło
w innej odpowiedzi należy zauważyć, że jQuery
fadeTo
nie ustawia siędisplay:none
po zakończeniu, więc może również dostarczyć tutaj rozwiązanie, zamiast używaćfadeOut
na przykład:jQuery, ukryj div bez naruszania reszty strony
źródło
Użyłem wcześniej,
opacity: 0
zanim zobaczyłemvisibility: hidden
sztuczkę.Ale w wielu przypadkach
opacity: 0
jest to problematyczne, ponieważ pozwala na interakcję z elementem , nawet jeśli go nie widać! (Jak wskazał DeadPassive .)Zwykle nie tego chcesz. Ale może czasami możesz?
źródło