252 votes

Y a-t-il un opposé à display:none?

Le contraire de visibility: hidden est visibility: visible. De même, y a-t-il un contraire pour display: none ?

Beaucoup de gens sont confus pour savoir comment afficher un élément lorsqu'il a display: none, car ce n'est pas aussi clair que d'utiliser la propriété visibility.

Je pourrais simplement utiliser visibility: hidden à la place de display: none, mais cela ne donne pas le même effet, donc je ne vais pas avec ça.

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é.

224voto

Paul D. Waite Points 35456

display: none n'a pas d'opposé littéral comme visibility:hidden le fait.

La propriété visibility décide si un élément est visible ou non. Elle a donc deux états (visible et hidden), qui sont opposés l'un à l'autre.

Cependant, la propriété display décide des règles de mise en page qu'un élément suivra. Il existe plusieurs types de règles pour la manière dont les éléments se mettront en page en CSS, donc il existe plusieurs valeurs différentes (block, inline, inline-block etc — voir la documentation pour ces valeurs ici ).

display:none supprime complètement un élément de la mise en page de la page, comme s'il n'existait pas.

Toutes les autres valeurs de display font en sorte que l'élément fasse partie de la page, donc d'une certaine manière ils sont tous opposés à display:none.

Mais il n'y a pas une seule valeur qui soit le contraire direct de display:none - tout comme il n'y a pas une seule coiffure qui soit l'opposé de "chauve".

2 votes

Je constate que vous avez mentionné display: initial dans la réponse auto-supprimée - pour les navigateurs implémentant CSS2.1, c'est synonyme de display: inline. Cela ne réinitialise pas display à la valeur par défaut du navigateur pour un élément donné - ce n'est pas ce que signifie "valeur initiale".

0 votes

Si vous êtes chauve par choix, lorsque vous arrêtez de vous raser, vos cheveux repousseront bouclés et noirs si c'est comme ça qu'ils étaient avant de vous raser. ;-) Je suis d'accord avec ce commentaire, selon lequel 'display est beaucoup trop surchargé' et le CSS aurait dû nous donner des propriétés distinctes pour le flux (bloc ou en ligne), la mise en page interne (flex, grille, etc.) et la visibilité (visible, invisible, aucune/cache). Bien que le flux et la mise en page interne distincts soient maintenant une chose, substituer display: none est toujours une douleur.

109voto

RockPaperLizard Points 1057

Un véritable opposé à display: none n'existe pas encore.

Mais display: unset est très proche et fonctionne dans la plupart des cas.

De MDN (Mozilla Developer Network):

Le mot-clé unset en CSS est la combinaison des mots-clés initial et inherit. Comme ces deux autres mots-clés CSS globaux, il peut être appliqué à n'importe quelle propriété CSS, y compris le raccourci CSS all. Ce mot-clé réinitialise la propriété à sa valeur héritée si elle hérite de son parent ou à sa valeur initiale si ce n'est pas le cas. En d'autres termes, il se comporte comme le mot-clé inherit dans le premier cas et comme le mot-clé initial dans le second cas.

(source : https://developer.mozilla.org/docs/Web/CSS/unset)

À noter également que display: revert est actuellement en cours de développement. Voir MDN pour plus de détails.

0 votes

Que diriez-vous de display: initial?

0 votes

@Flimm Non, display: initial est équivalent à revenir à display: inline ce que vous ne voulez pas si vous aviez précédemment un élément avec display: block par défaut.

40voto

Ilya Streltsyn Points 3857

Lorsque vous modifiez l'élément display en Javascript, dans de nombreux cas, une option appropriée pour 'annuler' le résultat de element.style.display = "none" est element.style.display = "". Cela supprime la déclaration display de l'attribut style, ramenant la valeur réelle de la propriété display à la valeur définie dans la feuille de style du document (ou à la valeur par défaut du navigateur si elle n'est pas redéfinie ailleurs). Mais l'approche la plus fiable est d'avoir une classe en CSS comme

.invisible { display: none; }

et ajouter/supprimer ce nom de classe à partir de element.className.

2 votes

Si vous voulez remplacer .element { display: none } (défini dans la librairie CSS par exemple) avec .element { display: '' !important }, cela ne fonctionnera pas. Vous devez utiliser .element { display: unset !important }

4 votes

J'ai parlé de "défaire" display:none en JavaScript uniquement. Bien sûr, la chaîne vide ne fonctionnera pas en CSS, car c'est une valeur non valide. Cependant, le display: unset que vous proposez ne restaurera pas, par exemple, la valeur par défaut display:block pour un

ou la valeur par défaut display:table-row pour un , cela transforme effectivement tout en display:inline (tout comme display:initial). Pour restaurer la valeur par défaut du navigateur pour l'élément, il existe display:revert, mais ce n'est pas bien supporté (caniuse.com/#feat=css-revert-value).

4voto

indera Points 73

Vous pouvez utiliser

affichage: normal;

Cela fonctionne normalement.... C'est un petit hack en css ;)

2 votes

Pourquoi cela reçoit-il des votes négatifs? Est-ce une mauvaise façon de le faire ou? Cela fonctionne bien pour les lignes de tableau, mais devrais-je utiliser autre chose?

8 votes

La valeur 'normal' n'est pas une valeur valide pour la propriété display, donc elle est simplement ignorée et fonctionne effectivement comme une assignation element.style.display = '' (voir ma réponse ci-dessus).

39 votes

Donc en d'autres termes, vous auriez pu utiliser display: chunk norris; pour le même effet, avec un peu plus de punch.

4voto

user3589536 Points 194

Comme Paul l'explique, il n'y a pas d'opposé littéral de display: none en HTML car chaque élément a un affichage par défaut différent et vous pouvez également changer l'affichage avec une classe ou un style inline, etc.

Cependant, si vous utilisez quelque chose comme jQuery, leurs fonctions show et hide se comportent comme s'il existait un opposé de display none. Lorsque vous masquez, puis affichez à nouveau un élément, il s'affiche exactement de la même manière qu'avant d'être masqué. Ils le font en stockant la valeur ancienne de la propriété display lors du masquage de l'élément afin que lorsque vous l'affichez à nouveau, il s'affiche de la même manière qu'avant que vous ne le masquiez. https://github.com/jquery/jquery/blob/740e190223d19a114d5373758127285d14d6b71e/src/css.js#L180

Cela signifie que si vous définissez par exemple un div pour s'afficher en ligne ou en inline-block, et que vous le masquez puis le montrez à nouveau, il réapparaîtra une fois de plus en tant qu'affichage en ligne ou en inline-block comme avant.

hello
hello2
hello3

script:

  $('a').click(function(){
        $('div').toggle();
    });

Remarquez que la propriété d'affichage du div restera constante même après avoir été masquée (display:none) et affichée à nouveau.

1 votes

"display:table-cell" était celui dont j'avais besoin. N'a pas été mentionné dans toute autre réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X