Pour aller plus loin dans notre étude du CSS, nous allons devoir maintenant comprendre comment est définie la place prise par chaque élément dans une page.
Les niveaux ou « types » d’éléments HTML
De manière schématique, on peut considérer qu’Il existe deux grands types d’affichage principaux pour les éléments HTML : un élément HTML va pouvoir être soit de niveau (ou de type) block, soit de niveau (ou de type) inline.
Ces types d’affichage vont définir la façon dont les éléments vont se comporter dans une page par rapport aux autres et la place qu’ils vont prendre dans la page.
Connaître le type d’affichage d’un élément HTML va donc être essentiel pour créer et mettre en forme nos pages web car les éléments de type block et ceux de type inline vont se comporter de façon radicalement différente dans une page et certaines propriétés CSS vont avoir des comportements différents selon le type d’affichage d’un élément.
Comprendre comment est défini le type d’affichage d’un élément HTML
Le type d’affichage d’un élément va toujours être défini en CSS par la propriété display. Si cette propriété n’est pas explicitement renseignée pour un élément, c’est la valeur par défaut de display qui va être appliquée à l’élément c’est-à-dire display: inline.
Ainsi, par défaut, on peut dire que tout élément HTML va posséder un type d’affichage inline (nous allons voir par la suite ce que signifie ce type d’affichage).
Cependant, rappelez-vous que chaque navigateur possède une feuille de styles (c’est-à-dire un fichier CSS) qui sera appliquée par défaut pour les différents éléments dont nous ne précisons pas le comportement dans nos propres feuilles de style.
La plupart des navigateurs possèdent aujourd’hui des feuilles de style similaires notamment pour la définition des styles basiques et c’est une très bonne chose pour nous développeur puisque cela va nous éviter d’avoir à définir le comportement de chaque propriété pour chaque élément de notre page.
Parmi ces styles par défaut appliqués par n’importe quel navigateur se trouve la définition du type d’affichage ou du display pour chaque élément.
Aujourd’hui, la plupart des navigateurs suivent les recommandations du W3C (l’organisme en charge de l’évolution et des standards des langages Web). Ce W3C spécifie pour chaque élément HTML quelle devrait être la valeur de son display.
Attention cependant : encore une fois, ce ne sont que des recommandations et chaque navigateur est libre de ne pas en tenir compte et de définir une autre valeur de display pour chaque élément !
C’est la raison pour laquelle il reste important de définir nous-mêmes la plupart des styles CSS impactant et qui pourraient être définis différemment par défaut par différents navigateurs.
Le W3C va donc indiquer quel devrait être le type d’affichage d’un élément par défaut et l’immense majorité des navigateurs va appliquer ces recommandations ce qui fait que l’un des display suivants à la plupart des éléments HTML en fonction de l’élément :
display : block: affichage sous forme d’un bloc ;display : inline: affichage en ligne ;display : none: l’élément n’est pas affiché.
Notez que le W3C préconise d’autres types d’affichage pour certains éléments HTML particuliers. Les deux autres valeurs de display généralement respectées et appliquées par les navigateurs sont :
display : list-itemva être appliquée par défaut pour les éléments de listeli. L’affichage se fait sous forme de bloc mais une boite avec un marqueur est également générée ;display : tableva être appliquée par défaut pour les éléments de tableautable. L’affichage se fait sous forme de bloc.
Certains navigateurs dans certains cas très particuliers peuvent également utiliser la valeur inline-block pour afficher certains éléments.
Ici, vous devez bien comprendre que ces valeurs ne sont que les valeurs préconisées par le W3C. Rien ne nous empêche de définir un type d’affichage différent de celui préconisé pour un élément en utilisant la propriété display avec la valeur souhaitée. Cela va pouvoir être utile pour aider à la mise en page de certains éléments.
Bon à savoir : Jusqu’à récemment (jusqu’au HTML 4.1), le W3C utilisait la simple distinction « bloc-level elements » vs « inline-level elements » (éléments de type block vs éléments de type inline) pour catégoriser les éléments HTML. Cependant, l’évolution des langages HTML et CSS et de leur complexité a amené le W3C à repenser la façon dont les éléments devaient être catégorisés. Aujourd’hui, donc, les éléments sont classés selon des catégories ou des modèles de contenus (« content categories » ou « content models »). Nous reparlerons de ces concepts avancés plus tard.
Rapide introduction au modèle des boites
Le modèle des boites (que nous étudierons plus tard dans ce cours) nous dit que tout élément HTML peut être représenté sous forme d’une boite rectangulaire. C’est une représentation qu’il vous faut connaitre et qu’il vous faudra comprendre.
Cette boite rectangulaire représentant l’élément contient d’autres boites (une qui contient le contenu, une autre qui contient en plus les marges intérieures, etc.) et ces différentes boites vont se comporter de manière différente selon le type d’affichage qui va lui être attribué, c’est-à-dire selon la valeur donnée à la propriété display pour cet élément.

Cependant, retenez bien ici que quelle que soit la valeur donnée à la propriété display, l’élément va toujours pouvoir être représenté sous forme d’une boite. Cela peut vous sembler flou pour le moment, mais intégrer cela va beaucoup vous aider pour bien comprendre comment créer des mises en page efficaces en CSS.
Les éléments de type inline
Par simplicité, on appellera « élément de type inline » (ou « inline level element » en anglais) un élément auquel a été appliqué un display: inline.
Les éléments de type inline vont posséder les caractéristiques suivantes qui vont les différencier des éléments de type block :
- Un élément de type
inlinene va occuper que la largeur nécessaire à l’affichage de son contenu par défaut ; - Les éléments de type
inlinevont venir essayer de se placer en ligne, c’est-à-dire à côté (sur la même ligne) que l’élément qui les précède dans le code HTML ; - Un élément de type
inlinepeut contenir d’autres éléments de typeinlinemais ne devrait pas contenir d’éléments de typeblock.
De plus, notez qu’on ne va pas par défaut pouvoir appliquer de propriété width ou height à un élément de type inline puisque la caractéristique principale de ce type d’éléments est de n’occuper que la place nécessaire à l’affichage de leur contenu.
Les éléments HTML dont le type d’affichage recommandé par le W3C est le type inline les plus courants sont les suivants :
- Les éléments de distinction d’importance du contenu
emetstrong; - L’élément
span; - L’élément de liens
a; - L’élément
button; - Les éléments de formulaire
input,label,textareaet de liste de choixselect; - L’élément d’insertion d’images
img(cas intéressant et souvent source de confusions car on va pouvoir passer une largeur et une hauteur à l’image à afficher en soi qui va « remplacer » l’élémentimglors de l’affichage, mais il n’empêche que l’élémentimgest bieninlineen soi); - Les éléments
code,script, etc.



See the Pen Cours HTML CSS 3.8.1 by Pierre (@pierregiraud) on CodePen.
Dans l’exemple ci-dessus, j’ai rajouté une couleur de fond aux éléments inline afin que vous puissiez bien voir l’espace qu’ils prennent dans la page.
Les éléments de type block
Par simplicité, on appellera « élément de type block » (ou « block level element » en anglais) un élément auquel on va appliquer un display: block.
Les éléments de type block vont posséder les caractéristiques de disposition suivantes :
- Un élément de type
blockva toujours prendre toute la largeur disponible au sein de son élément parent (ou élément conteneur) ; - Un élément de type
blockva toujours « aller à la ligne » (créer un saut de ligne avant et après l’élément), c’est-à-dire occuper une nouvelle ligne dans une page et ne jamais se positionner à côté d’un autre élément par défaut ; - Un élément de type
blockpeut contenir d’autres éléments de typeblockou de typeinline.
Les éléments HTML dont le type d’affichage recommandé par le W3C est le type block les plus communs sont les suivants :
- L’élément
body, cas particulier mais qui est concrètement considéré comme un élémentblock; - L’élément de division du contenu
div; - Les paragraphes
pet titresh1,h2,h3,h4,h5,h6; - Les éléments structurants
article,aside,header,footer,navetsection; - Les listes
ul,ol,dlet éléments de listes de définitiondtetdd; - L’élément de définition de tableaux
table; - L’élément de définition de formulaires
formet l’élémentfieldset; - Les élément
figureetfigcaption; - Les éléments
canvas,video, etc.



See the Pen Cours HTML CSS 3.8.2 by Pierre (@pierregiraud) on CodePen.
Bon à savoir : Les éléments HTML comme video et img décrits ci-dessus comme étant respectivement de types block et inline sont des éléments HTML très particuliers : ils sont dans la catégorie des éléments « void » (j’utilise ici le mot anglais car utiliser « vide » porterait à confusion) et ce sont également ce qu’on appelle des éléments HTML remplacés. Un élément void est un élément qui ne peut pas posséder de contenu qui lui soit propre et un élément remplacé est un élément qui fait appel à du contenu extérieur (qui va être « remplacé » par un contenu extérieur) possédant déjà des dimensions propres. Notez que la plupart des éléments remplacés sont également des éléments void.
Les autres valeurs de la propriété display
Nous allons passer de nombreuses autres valeurs à la propriété display en plus des valeurs inline, block et none comme par exemple inline-block, table, list-item, flex, etc.
Nous aurons l’occasion de reparler des différentes valeurs de la propriété display dans la leçon qui lui est dédiée plus tard dans ce cours.
Pour le moment, retenez simplement ici que toutes ces « sous » valeurs d’affichage vont toujours reposer sur un affichage pour l’élément en soi block ou inline auquel vont pouvoir s’ajouter différentes règles, contraintes ou variations.
Je vous demande donc pour l’instant de considérer que tous les éléments sont soit de type block, soit de type inline et de bien retenir les différences entre ces deux types d’affichage.






