display: none
La valeur none
attribuée à la propriété display
permet de ne pas afficher un élément html.
On constate sur l'exemple ci-dessus que le second paragraphe n'apparaît pas (à cause de la règle display : none;
faite
sur ce paragraphe) : il disparaît du flux.
Le troisième paragraphe occupe une place dans la page comme si le second paragraphe n'existait pas.
hidden
hidden
n'est pas une valeur de display
, c'est une valeur de la propriété visibility
.
Nous en parlons dans cette page pour souligner une remarque faite ci-dessus : "le paragraphe disparaît du flux".
Avec la déclaration visibility: hidden
, on rend également invisible un élément, mais cette fois on ne le fait pas disparaître du flux : l'élément occupe encore la place qu'il occuperait s'il était visible.
Vous pouvez constater que le paragraphe 2 occupe sa place dans l'exemple ci-dessous bien que son contenu soit invisible.
display: block
La déclaration display: block;
sur un élément lui donne un comportement de type block.
- L'élément ne s'affiche pas à la suite dans la ligne en cours, il s'affiche en-dessous du bloc en cours.
C'est le comportement par défaut des éléments p, h1 à h6, article, section par exemple.
- Un élément de type bloc peut contenir, en général, d'autres éléments de type bloc ou des éléments de type inline
Exception : un élément
p
ne contient pas d'autres éléments de type block. Placer un élément h1
dans un
élément p
sera par exemple détecté comme une erreur sur le w3 validator.
- On peut préciser les dimensions d'un élément de type block,
ce n'est normalement pas le cas d'un élément inline.
- Un élément de type block occupe en largeur tout l'espace possible dans son conteneur, alors qu'un
élément en-ligne (type inline) n'occupe que la largeur qui est nécessaire à son contenu.
Dans cet exemple, on a forcé le second élément span à devenir de type block (avec la première règle css) : il ne s'affiche plus dans la suite de la ligne mais sous le bloc ligne en cours.
On voit également que l'élément span, normalement de type inline, n'occupe que la largeur nécessaire à l'écriture du mot qu'il contient dans le premier paragraphe alors qu'il occupe toute la largeur de son conteneur lorsqu'il est déclaré de type block.
On voit enfin que le redimensionnement
(ici en hauteur, il en serait de même pour la largeur) imposé n'a d'effet que sur l'élément de type block
(le premier span
semble "insensible" à cette règle contrairement au second, alors
que la règle css concerne a priori tous les éléments span
).
display: inline
Nous avons déjà parlé des éléments en-ligne dans le paragraphe précédent
pour souligner la différence avec les éléments de type block.
Ces deux types d'éléments (inline et block) ne se comprennent
correctement qu'en comparant leur comportement.
- L'élément inline s'affiche dans la ligne en cours.
C'est un "élément naturel" de la phrase.
Les éléments de texte, les éléments img, span sont de ce type par défaut dans les navigateurs.
- Les éléments de type inline sont contenus dans un élément de type block
(ce type block parent peut être l'élément body lui-même).
- Un élément inline peut contenir un élément inline (mais ne peut contenir un élément block).
- On ne peut redimensionner un élément inline (sauf les images).
display: inline-block
Un élément déclaré display: inline-block
a un comportement qui est un mélange des comportements inline et block.
- Les éléments
inline-block
s'affichent les uns à côté des autres
(tant que la largeur du conteneur le permet) comme le font les éléments inline.
- Les éléments
inline-block
peuvent être redimensionnés (avec les propriétés width
et height
), comme les éléments block.
Affichage de paragraphes (élément de type block par défaut dans les navigateurs : )
Donnons maintenant le type inline-block
aux paragraphes :
Le comportement semble être celui d'éléments inline. Toutefois, on peut agir sur les dimensions (ce ne serait pas possible avec le type inline
) :
display: flex
Exemples
La déclaration display: flex;
est un peu différente des précédentes.
Elle agit sur les enfants de l'élement plutôt que sur l'élément lui-même.
Dans l'exemple ci-dessous, observez bien les règles CSS déclarées pour chaque élément div
et l'affichage obtenu.
Illustration
fils 1
fils 2
fils 3
fils 4
fils 5
fils 6
fils 7
fils 8
fils 9
fils 10
fils 11
fils 12
D'autres propriétés sont applicables pour ajuster l'affichage avec flex
.