¿Hay alguna manera en jQuery donde pueda ocultar un elemento, pero no cambiar el DOM cuando está oculto? Estoy ocultando un cierto elemento, pero cuando está oculto, los elementos debajo de él se mueven hacia arriba. No quiero que eso suceda. Quiero que el espacio permanezca igual, pero que el elemento se muestre / oculte a voluntad.
¿Puedo hacer esto?
Respuestas:
En lugar de
hide()
usar:hide()
establece eldisplay
estilo ennone
, lo que elimina completamente el elemento del flujo de documentos y hace que no ocupe espacio.visibility:hidden
mantiene el espacio como esfuente
css('visibility','visible')
css('visibility', '')
Intente configurar el
visibility
ahidden
:fuente
display: none;
lo sacará del flujo de contenido para que pueda ver su otro contenido moverse en el espacio vacío dejado atrás. (lodisplay: block;
trae de vuelta al flujo empujando todo fuera del camino).visibility: hidden;
lo mantendrá dentro del flujo de contenido ocupando espacio, pero simplemente lo hará invisible. (visibility: visible;
lo revelará nuevamente)Querrá usarlo
visibility
si desea que su flujo de contenido permanezca sin cambios.fuente
en otra respuesta, se observa que jQuery's
fadeTo
no se configuradisplay:none
al finalizar, por lo que también podría proporcionar una solución aquí, en lugar de usar,fadeOut
por ejemplo:jQuery, oculta un div sin molestar al resto de la página
fuente
Antes lo usaba
opacity: 0
antes de ver elvisibility: hidden
truco.Pero en muchos casos
opacity: 0
es problemático, porque te permite interactuar con el elemento , ¡aunque no puedas verlo! (Como señaló DeadPassive ).Por lo general, eso no es lo que quieres. ¿Pero quizás ocasionalmente podrías?
fuente