Voici une réponse du futur... environ 8 ans après que vous ayez posé la question. Alors qu'il n'y a toujours pas de valeur opposée à display: none
, continuez à lire... Il y a quelque chose de encore mieux.
La propriété display
est tellement surchargée que ce n'est pas amusant. Elle a au moins trois fonctions différentes. Elle contrôle :
- le type d'affichage externe (comment l'élément participe à la mise en page du parent, par exemple
block
, inline
)
- le type d'affichage interne (la mise en page des éléments enfants, par exemple
flex
, grid
)
- la boîte d'affichage (si l'élément s'affiche ou non, par exemple
contents
, none
).
C'est ainsi depuis si longtemps que nous avons appris à vivre avec, mais certaines améliorations très attendues (espérons-le !) arrivent sur notre chemin.
Firefox prend maintenant en charge la syntaxe à deux valeurs (ou valeurs à mots-clés multiples) pour la propriété display
qui sépare les types d'affichage externe et interne. Par exemple, block
devient maintenant block flow
, et flex
devient block flex
. Cela ne résout pas le problème de none
, mais la séparation explicite des préoccupations est, je pense, un pas dans la bonne direction.
Pendant ce temps, Chromium (85+) nous a donné la propriété content-visibility
, et l'a annoncée avec un certain éclat. Elle vise à résoudre un problème différent - accélérer les temps de chargement de la page en ne rendant pas un élément (et ses mises en page enfant) jusqu'à ce qu'il approche du viewport et ait vraiment besoin d'être vu, tout en restant accessible pour les recherches 'Trouver', etc. Cela se fait automatiquement en lui attribuant simplement la valeur auto
. C'est une nouvelle passionnante en soi, mais regardez ce qu'elle fait aussi...
La propriété content-visibility: hidden
vous offre tous les mêmes avantages que le contenu non rendu et l'état de rendu mis en cache comme le fait content-visibility: auto
hors écran. Cependant, contrairement à auto
, il ne commence pas automatiquement à se rendre à l'écran.
Cela vous donne plus de contrôle, vous permettant de masquer les contenus d'un élément et de les afficher rapidement plus tard.
Comparez-le à d'autres moyens courants de masquer les contenus d'éléments :
display: none
: masque l'élément et détruit son état de rendu. Cela signifie que le fait de démasquer l'élément est aussi coûteux que de rendre un nouvel élément avec les mêmes contenus.
visibility: hidden
: masque l'élément et conserve son état de rendu. Cela ne supprime pas vraiment l'élément du document, car il (et son sous-arbre) occupent toujours de l'espace géométrique sur la page et peuvent toujours être cliqués. Cela met également à jour l'état de rendu à chaque fois qu'il est nécessaire, même lorsqu'il est masqué.
content-visibility: hidden
, en revanche, masque l'élément tout en préservant son état de rendu, de sorte que, s'il y a des changements à apporter, ils sont effectués uniquement lorsqu'ils sont à nouveau affichés (c'est-à-dire lorsque la propriété content-visibility: hidden
est supprimée).
Wow. C'est un peu ce que display: none
aurait dû être dès le départ - une façon de supprimer un élément de la mise en page, de manière élégante, et complètement indépendamment du type d'affichage ! Ainsi, l ' 'opposé' de content-visibility: hidden
est content-visibility: visible
, mais vous avez une troisième option très utile en auto
qui effectue un rendu paresseux pour vous, accélérant le chargement initial de votre page.
La seule mauvaise nouvelle ici est que Firefox et Safari ne l'ont pas encore adopté. Mais qui sait, au moment où vous (cher collègue développeur) lirez ceci, cela pourrait avoir changé. Gardez un œil sur https://caniuse.com/css-content-visibility !
11 votes
Pourquoi se donner la peine de poser une question si votre réponse consiste à copier/coller un tableau depuis w3schools.com/cssref/pr_class_display.asp ?
0 votes
@mathheadinclouds je ne pense pas que la réponse d'Ilya fournisse un opposé à display none. Cela nous donne sûrement un truc, mais la question concerne le fait d'avoir une analogie comme
visible -> hidden
et? -> none
1 votes
Bien, tu aurais pu demander "comment annuler l'effet de display:none" - alors, la méthode d'Ilya serait une réponse parfaite. En essence, tu as demandé un certain display: ?quelquechose?, tel que ce ?quelquechose? annule l'effet de display: none (ça, je l'appellerais opposé). Bien sûr, ce ?quelquechose? n'existe pas. Donc pas d'opposé. D'accord, pas la peine de discuter cela, ce n'est pas en dispute. Mais tu PEUX annuler l'effet, si tu utilises la méthode d'Ilya. Donc, dans un sens plus large, c'est un opposé. C'est juste qu'il n'y a pas un "mot unique" opposé.
0 votes
@mathheadinclouds c'est ce que la réponse de Paul nous dit. Il n'y a pas d'opposé, ils sont tous opposés. Je n'ai pas demandé un moyen d'annuler l'effet, j'ai demandé une valeur que la règle d'affichage peut contenir comme le fait la règle de visibilité.