¿Cuál es la diferencia entre las propiedades de visualización y visibilidad?
¿Cuál es la diferencia entre las propiedades de visualización y visibilidad?
Respuestas:
La visibility
propiedad solo le dice al navegador si debe mostrar un elemento o no. Es visible ( visible
puede verlo) o invisible ( hidden
no puede verlo).
La display
propiedad le dice al navegador cómo dibujar y mostrar un elemento, si es que lo hace, si debe mostrarse como un inline
elemento (es decir, fluye con texto y otros elementos en línea) o un block
elemento de nivel (es decir, tiene propiedades de alto y ancho que se puede establecer, es flotante, etc), o un inline-block
(es decir, actúa como una caja de bloque, pero se puso en línea en lugar) y algunos otros ( list-item
, table
, table-row
, table-cell
, flex
, etc).
Cuando establece un elemento en, display: block
pero también lo establece visibility: hidden
, el navegador aún lo trata como un elemento de bloque, excepto que simplemente no lo ve. Algo así como apilar una caja roja encima de una caja invisible: la caja roja parece flotar en el aire cuando en realidad está encima de una caja física que no se puede ver.
En otras palabras, esto significa que los elementos display
que no none
lo son todavía afectarán el flujo de elementos en una página, independientemente de si son visibles o no. Los cuadros que rodean un elemento con display: none
se comportarán como si ese elemento nunca hubiera estado allí (aunque permanece en el DOM).
display: none;
, ¿ese elemento se elimina del DOM? o estoy totalmente confundido?
visibilidad: oculta;
pantalla: ninguna;
notas adicionales:
pantalla: ninguna; eliminará el estilo visual / espacio físico de los elementos DOM del DOM, mientras que la visibilidad: oculta; no eliminará el elemento, simplemente lo ocultará. Entonces, un div que ocupa 300px de espacio vertical en su DOM TODAVÍA ocupará 300px de ancho vertical cuando se establezca en visibilidad: oculto; pero cuando se configura para mostrar: ninguno; sus estilos visuales y el espacio que ocupa se ocultan y luego el espacio se "libera" por falta de una palabra mejor.
[EDITAR] - Hace un tiempo que escribí lo anterior, y si no estaba lo suficientemente informado o si no tenía un mal día, no lo sé, pero la realidad es que el elemento NUNCA se elimina de la jerarquía DOM. Todos los 'estilos' de visualización de nivel de bloque están completamente 'ocultos' cuando se utiliza display: none, mientras que con visibilidad: hidden; el elemento en sí está oculto pero aún ocupa un espacio visual en el DOM. Espero que esto aclare las cosas
display: none
va a no eliminar un elemento de la DOM. El elemento sigue ahí, simplemente no se muestra .