Qual è la differenza tra le proprietà di visualizzazione e di visibilità?
Qual è la differenza tra le proprietà di visualizzazione e di visibilità?
Risposte:
La visibilityproprietà dice solo al browser se mostrare o meno un elemento. È visibile ( visible- puoi vederlo) o invisibile ( hidden- non puoi vederlo).
La displayproprietà dice al browser come disegnare e mostrare un elemento, se non del tutto - se deve essere visualizzato come un inlineelemento (cioè scorre con testo e altri elementi in linea) o un blockelemento -level (cioè ha proprietà di altezza e larghezza che è possibile impostare, è galleggiante, ecc), o un inline-block(cioè si comporta come una scatola di blocco, ma è prevista in linea invece) e alcuni altri ( list-item, table, table-row, table-cell, flex, ecc).
Quando imposti un elemento su display: blockma anche impostato visibility: hidden, il browser lo tratta ancora come un elemento di blocco, tranne per il fatto che non lo vedi. Un po 'come il modo in cui impili una scatola rossa sopra una scatola invisibile: la scatola rossa sembra fluttuare a mezz'aria quando in realtà si trova sopra una scatola fisica che non puoi vedere.
In altre parole, ciò significa che gli elementi displayche non nonelo sono influenzeranno comunque il flusso degli elementi in una pagina, indipendentemente dal fatto che siano visibili o meno. I riquadri che circondano un elemento con display: nonesi comporteranno come se quell'elemento non fosse mai stato lì (sebbene rimanga nel DOM).
display: none;, allora quell'elemento viene rimosso dal DOM? o sono totalmente confuso?
visibilità: nascosta;
display: nessuno;
note extra:
display: nessuno; rimuoverà lo stile di visualizzazione / spazio fisico degli elementi DOM dal DOM, mentre la visibilità: nascosta; non rimuoverà l'elemento, ma semplicemente lo nasconderà. Quindi un div che occupa 300px di spazio verticale nel tuo DOM occuperà ANCORA 300px di larghezza verticale se impostato su visibilità: nascosto; ma se impostato per visualizzare: nessuno; i suoi stili visivi e lo spazio che occupa sono nascosti e lo spazio viene quindi "liberato" per mancanza di una parola migliore.
[EDIT] - È stato un po 'di tempo fa che ho scritto quanto sopra, e se non ero abbastanza informato o se stavo avendo una brutta giornata, non lo so, ma la realtà è che l'elemento non viene MAI rimosso dalla gerarchia DOM. Tutti gli "stili" di visualizzazione a livello di blocco sono completamente "nascosti" quando si utilizza display: nessuno, mentre con visibilità: nascosto; l'elemento stesso è nascosto ma occupa ancora uno spazio visivo nel DOM. spero che questo chiarisca le cose
display: nonesarà non rimuovere un elemento dal DOM. L'elemento è ancora lì, semplicemente non viene visualizzato .