Visibility - Propriété CSS

visibility

Résumé des caractéristiques de la propriété visibility

Description rapide
Définit si un élément doit être affiché ou masqué.
Statut
Standard
S'applique à
Tous les éléments
Utilisable sur
HTML, SVG
Valeurs prédéfinies
visible | hidden | collapse | force-hidden
Pourcentages
Ne s'appliquent pas.
Valeur initiale
visible
Héritée par défaut
Oui.
Discrète : lors d'une animation, la propriété visibility passe d'une valeur à l'autre sans transition.
Single : valeur unique (l'ordre n'intervient pas).
Module W3C
Module CSS - Affichage
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: CR (document candidat à la recommandation)

Statut du document: REC (recommandation)

Schéma de la syntaxe de visibility.

visibility - Syntax DiagramSyntax diagram of the visibility CSS property. visible visible hidden hidden force-hidden force-hidden collapse collapsevisibility:;visibility:;
Schéma syntaxique de la propriété visibility.
Cliquez sur les liens du schéma pour plus de précisons sur les valeurs.

Description de la propriété visibility.

La propriété visibility définit la visibilité d'un élément. Attention : dans la plupart des cas, même lorsque l'élément n'est pas visible, son emplacement est conservé. Autrement dit la mise en page n'est pas modifiée même si l'élément n'est pas affiché.

Si un élément est déclaré invisible (hidden) mais que un ou plusieurs de ses descendants sont déclarés visibles, ces derniers seront quand même affichés. Ceci peut poser des problèmes difficiles à résoudre pour la navigateur. Comme par exemple dans un tableau, rendre une ligne (balise tr) ou une colonne (balise col) invisible, tout en maintenant visibles les cellules. Nombreux de ces cas particuliers ne sont pas précisément définis dans la norme.
La nouvelle valeur force-hidden devrait résoudre cela.


Voir aussi la propriété CSS display qui peut aussi masquer un élément avec la valeur none.

Valeurs pour visibility.

  • visibility: visible;

    L'élément est visible.

  • visibility: hidden;

    L'élément n'est pas visible mais sa place est réservée.

    Bien qu'il soit toujours possible de cliquer sur l'emplacement qu'aurait dû occuper l'élément invisible, il ne réagit pas aux événements de souris, ni aux autres événements. De même, lors d'une restitution sonore, l'élément invisible en doit pas être lu. On peut cependant forcer sa lecture, reportez-vous à la propriété speak.

    Néanmoins, si l'élément invisible est un container, il continue de jouer son rôle de container : les balises table continuent de disposer les cellules en tableau, les grilles et les flex-box continuent de positionner leurs enfants, etc.

  • visibility: force-hidden;

    Les boîtes générées par l'élément sont invisibles, quelque soit la valeur donnée à leur propriété visibility.

  • visibility: collapse;

    L'élément n'est pas visible et sa place n'est pas réservée. Cette valeur ne s'applique qu'à certains éléments, en particulier des éléments de tableaux :

    1. tr (ligne de tableau) : la ligne est masquée et les lignes suivantes sont remontées à sa place.
    2. tbody (corps de tableau) : le corps du tableau disparaît, ainsi que son emplacement.
    3. col : (colonne de tableau) la colonne est masquée et son emplacement est récupéré. Les colonnes suivantes sont décalées vers la gauche mais leur largeur n'est pas modifiée (la largeur du tableau est donc réduite).
    4. colgroup (groupe de colonnes de tableau) : même comportement que pour les colonnes.
    5. td (cellule de tableau) : la cellule est invisible mais le tableau n'est pas restructuré. Il y a donc une case blanche à la place de la cellule. collapse est équivalent à hidden.

    Pour tous les autres types d'éléments, la valeur collapse est équivalente à hidden.

  • visibility: initial; (visible) visibility: inherit; visibility: revert; visibility: revertLayer; visibility: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Exemple d'animation de visibility.

En animant la propriété visibility il est particulièrement facile de faire un clignotant (image ou texte). Le fait que l'emplacement de l'élément soit conservé permet de faire disparaître un élément sans modifier la mise en page, ce qui évite des calculs et le tressautement de la page.

Élément clignotant

Accéder à la propriété visibility par programme.

Avec Javascript, modifier la valeur de visibility.

En Javascript, voici comment modifier la valeur de visibility. On voit que Javascript propose une syntaxe avec la notation typique de CSS, en kebab-case (un tiret pour séparer les mots), et une autre syntaxe avec la notation en camel-case (une majuscule pour séparer les mots).

Javascript
let el = document.getElementById('id'); el.style['visibility'] = 'hidden'; // ou let el = document.getElementById('id'); el.style.visibility = 'hidden';

Avec Javascript, lire la valeur de visibility.

Ce code fonctionne si propriété a été affectée directement à l'élément lui-même par son attribut style, et non pas en passant par un sélecteur CSS.

Javascript
let el = document.getElementById('id'); let value = el.style['visibility']; // ou let el = document.getElementById('id'); let value = el.style.visibility;

Avec Javascript, lire la valeur calculée de visibility.

La valeur calculée est celle qui résulte de l'évaluation de la cascade d'héritages. Si visibility n'a été définie à aucun endroit, la valeur calculée est la valeur initiale de la propriété (soit visible dans le cas de visibility).

Javascript
let el = document.getElementById('id'); let value = window.getComputedStyle(el).getPropertyValue('visibility');

Avec JQuery, modifier la valeur de visibility.

JQuery

$('#id').css('visibility', 'hidden');

Avec JQuery, lire la valeur calculée de visibility.

JQuery
let value = $('#id').css('visibility');

Autres exemples de code.

D'autres exemples de code Javascript et JQuery sont donnés sur la page Javascript et CSS.

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété visibility et affichent ensuite soit la valeur telle qu'elle a été appliquée, soit la valeur calculée. Dans le cas de visibility, ce sera la même chose, puisque la propriété n'accepte que des valeurs prédéfinies.

Exemple interactif avec la propriété visibility.

Le simulateur applique la propriété visibility sur plusieurs éléments de types différents (les éléments concernés sont sur fond coloré) :

  • Un élément du type bloc (div).
  • Un élément du type inline (span).
  • La cellule de Janvier du premier tableau (balise td).
  • La deuxième ligne (balise tr) et la quatrième colonne (balise col) du deuxième tableau.

Vous constaterez que la valeur hidden ne semble avoir aucun effet lorsqu'elle est appliquée sur une colonne de tableau. C'est dû au fait que les cellules ne sont pas des descendants de la colonne dans l'arborescence HTML. Les cellules n'héritent donc pas des colonnes (par contre elles héritent des lignes tr). Par contre la valeur collapse fait bien disparaître la colonne.

visibility :
Application de la propriété visibility sur un élément du type bloc.
Application de la propriété visibility sur un élément du type inline.
Hiver/printempsJanvierFévrierMarsAvril
Printemps/étéMaiJuinJuilletAoût
Automne/hiverSeptembreOctobreNovembreDécembre
Hiver/printempsJanvierFévrierMarsAvril
Printemps/étéMaiJuinJuilletAoût
Automne/hiverSeptembreOctobreNovembreDécembre

Compatibilité des navigateurs avec visibility.

Aucun problème de compatibilité n'est à signaler au sujet de la propriété visibility.
Signalons quand même que la valeur collapse n'est applicable que sur certaines balises, ces dernières étant différentes suivant les navigateurs.

La nouvelle valeur force-hidden n'est pour l'instant pas reconnue.

1
Propriété
visibility
Estimation de la prise en charge globale.

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Chrome

Edge

Internet Explorer

Opéra

Firefox

QQ Browser

Safari

Safari sur IOS

Androïd Brower

Chrome pour Androïd

Firefox pour Androïd

Opéra Mobile

Baidu Browser

KaiOS Browser

UC Browser pour Androïd

Samsung Internet

Opéra mini

Histoire de la propriété visibility.

Voir aussi...

Les spécifications CSS éditées par le W3C sont organisées en modules. Les propriété visibility et display sont toutes les deux décrites dans le module CSS Display Module. Les définitions suivantes sont également présentées dans ce même module.

Propriétés :

display
Définit la nature de l'élément et la façon de l'afficher.
reading-flow
Définit dans quel ordre les éléments du conteneur seront lus ou parcourus dans le cas d'un parcours avec la touche tabulation.
reading-order
Définit la position d'un élément dans l'ordre de tabulation, particulièrement pour les enfants de flex-box ou de grilles.