Estoy usando visibility:hidden
para 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:none
lo estableceríaoffsetTop
en 0. Mi solución aquí era usar,visibility: hidden
luego 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:none
para ocultar y configurardisplay:block
para mostrar.fuente
display: block
, algunos tendrán que establecerse endisplay: inline
(como<span>
o<a>
o<img>
elementos DOM).hidden
condisplay: none
. Agregue la clase a un elemento para ocultarlo, elimínelo show. Al eliminarlo, ladisplay
propiedad se restaura al valor predeterminado del elemento.usar estilo en lugar de
fuente
Usar
display:none
es 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íavisibility
Mira, 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:none
yvisibility: hidden
visibility:hidden
significa que la etiqueta no está visible, pero se le asigna espacio en la página.display:none
significa que esconde completamente elementos con su espacio. (aunque aún puede interactuar con él a través del DOM)fuente
Alternar
display
no permite transiciones CSS suaves. En cambio, alternar tanto elvisibility
como elmax-height
.fuente
transform: translateX(-100%)
. No queremosdisplay: none
display:none
para ocultar y configurardisplay:block
para mostrar.fuente
as though they are not in the DOM at all (but without actually removing them from the DOM)
visibility: hidden
solo 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
!important
si se ve obligado a anular los estilos CSS existentes.fuente