Quelle est la différence entre les propriétés d'affichage et de visibilité?
Quelle est la différence entre les propriétés d'affichage et de visibilité?
Réponses:
La visibilitypropriété indique uniquement au navigateur s'il doit afficher un élément ou non. Il est soit visible ( visible- vous pouvez le voir), soit invisible ( hidden- vous ne pouvez pas le voir).
La displaypropriété indique au navigateur comment dessiner et afficher un élément, le cas échéant - s'il doit être affiché comme un inlineélément (c'est-à-dire qu'il coule avec du texte et d'autres éléments en ligne) ou un blockélément -level (c'est-à-dire qu'il a des propriétés de hauteur et de largeur qui vous pouvez définir, il est flottables, etc.), ou inline-block(il agit comme une boîte de bloc , mais est mis en ligne à la place) et quelques autres ( list-item, table, table-row, table-cell, flex, etc.).
Lorsque vous définissez un élément sur display: blockmais également défini visibility: hidden, le navigateur le traite toujours comme un élément de bloc, sauf que vous ne le voyez tout simplement pas. Un peu comme la façon dont vous empilez une boîte rouge au-dessus d'une boîte invisible: la boîte rouge a l'air de flotter dans les airs alors qu'en réalité elle est posée sur une boîte physique que vous ne pouvez pas voir.
En d'autres termes, cela signifie que les éléments avec displayqui n'est pas noneaffecteront toujours le flux d'éléments dans une page, qu'ils soient visibles ou non. Les boîtes entourant un élément avec display: nonese comporteront comme si cet élément n'était jamais là (bien qu'il reste dans le DOM).
display: none;, alors cet élément est supprimé du DOM? ou suis-je totalement confus?
visibilité: cachée;
affichage: aucun;
notes supplémentaires:
affichage: aucun; supprimera le style visuel / espace physique des éléments DOM du DOM, alors que visible: hidden; ne supprimera pas l'élément, mais le masquera simplement. Ainsi, un div occupant 300px d'espace vertical dans votre DOM occupera TOUJOURS 300px de largeur verticale lorsqu'il est réglé sur visibilité: hidden; mais lorsqu'il est réglé pour afficher: aucun; ses styles visuels et l'espace qu'il occupe sont cachés et l'espace est alors "libéré" faute d'un meilleur mot.
[EDIT] - Il y a quelque temps que j'ai écrit ce qui précède, et que je ne sois pas suffisamment informé ou que je passe une mauvaise journée, je ne sais pas, mais la réalité est que l'élément n'est JAMAIS retiré de la hiérarchie DOM. Tous les «styles» d'affichage au niveau du bloc sont complètement «masqués» lors de l'utilisation de display: none, alors qu'avec visibilité: hidden; l'élément lui-même est caché mais il occupe toujours un espace visuel dans le DOM. J'espère que cela clarifie les choses
display: nonene pas supprimer un élément du DOM. L'élément est toujours là, il n'est tout simplement pas affiché .