Estoy usando visibility:hiddenpara ocultar ciertos elementos, pero todavía ocupan espacio en la página mientras están ocultos.
¿Cómo puedo hacer que desaparezcan totalmente visualmente, como si no estuvieran en el DOM en absoluto (pero sin eliminarlos del DOM)?

offsetTop, ydisplay:nonelo estableceríaoffsetTopen 0. Mi solución aquí era usar,visibility: hiddenluego establecer el ancho y la altura en 0. Una vez que necesitaba volver a hacer visible el elemento, eliminé los tres atributos usando Javascript Una solución un poco hacky, pero funciona bien para casi todos los casos de uso.Respuestas:
Intente configurar
display:nonepara ocultar y configurardisplay:blockpara mostrar.fuente
display: block, algunos tendrán que establecerse endisplay: inline(como<span>o<a>o<img>elementos DOM).hiddencondisplay: none. Agregue la clase a un elemento para ocultarlo, elimínelo show. Al eliminarlo, ladisplaypropiedad se restaura al valor predeterminado del elemento.usar estilo en lugar de
fuente
Usar
display:nonees una buena opción solo para eliminar un elemento PERO también se eliminará para los lectores de pantalla . También hay discusiones si afecta el SEO. Hay un buen artículo breve sobre ese tema en A List ApartSi realmente solo quiere ocultar y no eliminar un elemento, mejor use:
De esta manera, también puede ser leído por lectores de pantalla.
La única desventaja de este método es que este DIV se procesa realmente y puede afectar el rendimiento , especialmente en teléfonos móviles.
fuente
visibility: hidden;, digamos que tiene otros elementos absolutos que no tendrán un conflicto por el espacio, solo conflicto dez-index. Solo por ocultar un elemento con el que iríavisibilityMira, en lugar de usar el
visibility: hidden;usodisplay: none;. La primera opción se ocultará pero aún ocupa espacio y la segunda opción se ocultará y no ocupará espacio.fuente
La respuesta a esta pregunta dice usar display: none y display: block, pero esto no ayuda a alguien que está tratando de usar transiciones CSS para mostrar y ocultar contenido usando la propiedad de visibilidad.
Esto también me volvió loco, porque el uso de la pantalla mata las transiciones CSS.
Una solución es agregar esto a la clase que usa visibilidad:
Para que esto funcione depende del diseño, pero debe mantener el contenido vacío dentro del div en el que reside.
fuente
Historia sobre
display:noneyvisibility: hiddenvisibility:hiddensignifica que la etiqueta no está visible, pero se le asigna espacio en la página.display:nonesignifica que esconde completamente elementos con su espacio. (aunque aún puede interactuar con él a través del DOM)fuente
Alternar
displayno permite transiciones CSS suaves. En cambio, alternar tanto elvisibilitycomo elmax-height.fuente
transform: translateX(-100%). No queremosdisplay: nonedisplay:nonepara ocultar y configurardisplay:blockpara mostrar.fuente
as though they are not in the DOM at all (but without actually removing them from the DOM)visibility: hiddensolo detiene la visualización del contenido, pero aún utiliza el espacio vertical / horizontal, pantalla: ninguno elimina el espacio vertical / horizontal del elemento.Aquí hay una opinión diferente sobre cómo volver a colocarlos después de la visualización: ninguno. no use display: block / inline, etc. En su lugar (si usa javascript) configure la visualización de la propiedad css en '' (es decir, en blanco)
fuente
Esto oculta el contenido y tampoco deja espacio vacío.
fuente
por encima de mi conocimiento es posible de 4 maneras
<button style="display:none;"></button>#buttonId{ display:none; }$('#buttonId').prop('display':'none');&$("#buttonId").css('opacity', 0);fuente
mostrar: ninguno es lo mejor para evitar el espacio en blanco en la página
fuente
Úselo
!importantsi se ve obligado a anular los estilos CSS existentes.fuente