Les éléments de type inline, block et inline-block. Les éléments embarqués.
#1 Introduction
On a vu que chaque élément HTML occupe sur l'écran un espace rectangulaire. On a appelé cet espace une boîte. Maintenant que nous avons des boîtes, on va regarder comment se comportent ces boîtes.
- Que peut contenir la boîte ?
- Quelle place occupe-t-elle ?
- Peut-on la redimensionner ?
- Comment se positionnent des boîtes si on en met plusieurs à la suite ?
L'agencement des boîtes sur l'écran est fait par un module du navigateur que l'on appelle le moteur de rendu. Le moteur de rendu calcule les tailles et les positions des boîtes sur l'écran. Il le fait en tenant compte notamment du type de l'élément, à savoir block
, inline
, inline-block
.
#2 Les éléments de type inline
Je vous donne ici, quelques éléments qui sont des éléments de type inline
: le lien a
, le strong
et le em
, le span
, le code
, le button
, le label
, les input
, le select
, le textarea
et le br
. Et ensuite, je vous en parle 😎...
Les boîtes issues des éléments de type inline
peuvent contenir du texte ou d'autres éléments de type inline
. Ci-dessous, l'élément inline
est le lien <a href='#'>un <strong>premier</strong> lien</a>
. Il contient un autre élément de type inline
, qui est l'élément strong
. Le tout est placé dans un élément p
(pour paragraphe) qui lui est un élément de type block
.
- La taille de la boîte qui correspond à un élément de type
inline
correspond à la taille de son contenu. - La taille de la boîte qui correspond à un élément de type
block
correspond à la taille de son conteneur (* j'y reviens plus bas dans le tuto). - Evidemment, vous avez besoin de connaître ces informations, si vous voulez placer vos éléments HTML au bon endroit sur une page.
Pour un élément inline
la taille de la boîte est calculée par le moteur de rendu en fonction du contenu. Vous ne pouvez pas redimensionner la boîte avec des règles CSS. C'est ce que j'essaie de faire sans succès dans l'exemple ci-dessous. Je mets un width
de 100 pixels et un height
de 100 pixels et ça n'a aucun effet sur cet élément.
Vous pouvez mettre une valeur de padding
. Seuls les padding
gauche et droit seront pris en compte.
Vous pouvez mettre une valeur de margin
mais seules les marges gauches et droites seront prises en compte. Dans cet exemple, j'ai pris un élément div
à la place de l'élément p
car l'élément p
a des marges par défaut de 1em
(* Chrome).
Les boîtes issues des éléments de type inline
sont positionnées par défaut les unes à côté des autres dans la boîte de leur élément conteneur. Si la place manque, elles se fractionnent et suivent le texte qui va à la ligne.
#3 Les éléments de type block
Je vous donne ici quelques éléments qui sont des éléments de type block
: header
, footer
, nav
, section
, article
, aside
, h1
à h6
, p
, div
, ul
, li
. Et ensuite je vous en parle 😎...
Les boîtes issues des éléments de type block
peuvent contenir d'autres boîtes de type block
ou inline
ou du texte. Ils ont souvent un rôle de conteneur. Il y a des exceptions, car on ne met pas un paragraphe dans un autre paragraphe. De même, on ne met pas un titre (h1 à h6) dans un autre titre (h1 à h6).
Par défaut, chaque boîte (block) est créée sur une nouvelle ligne et occupe toute la largeur disponible pour la ligne, c'est-à-dire la largeur du conteneur de cette ligne. Il faut tenir compte des marges et vous avez toutes les informations dans ce tutoriel Le modèle de boîte en HTML et en CSS.
Tester le codeVous pouvez repositionner ou redimensionner la boîte avec des règles CSS. Ci-dessous, vous avez un exemple de redimensionnement en largeur sur un premier élément section
puis en hauteur sur un deuxième élément article
.
Le positionnement des éléments est un sujet plus délicat. Vous avez plusieurs tutoriels qui y sont dédiés :
#4 On peut changer le type d'un élément
Vous pouvez, avec la propriété CSS display
, changer le type de boîte que le moteur de rendu va associer à un élément HTML.
Dans l'exemple ci-dessous, je place d'abord deux liens sur ma page HTML. Par défaut, ces deux liens vont se placer dans deux boîtes qui sont l'une à côté de l'autre. Puis à l'aide d'une déclaration CSS display:block
, je demande au moteur de rendu de placer ces deux liens dans des boîtes de type block
. Et dans ces conditions, les deux liens vont se placer l'un en dessous de l'autre.
#5 Le display inline-block
Vous pouvez demander qu'un élément ait un comportement intermédiaire en utilisant la valeur inline-block
pour la propriété display
. Dans ce cas, vous pourrez positionner les boîtes les unes à côté des autres comme pour des éléments inline
et vous pourrez redimensionner la boîte comme un élément de type block
. Je le fais ci-dessous pour des liens.
#6 Les éléments embarqués
Parmi les éléments embarqués les plus courants, on peut citer l'élément img
qui est utilisé pour implanter une image, l'élément audio
et l'élément video
.
Les éléments embarqués prennent place dans des boîtes dont la taille est définie à l'extérieur du moteur de rendu. Par exemple, une image ou une vidéo. Ces boîtes sont positionnées côte à côte, comme les boîtes des éléments inline
, mais vous pouvez les redimensionner. C'est ce qui amène à faire la différence entre éléments inline et éléments embarqués.