Éléments en ligne
Les éléments HTML (Hypertext Markup Language) étaient historiquement catégorisés comme des éléments de type « bloc » (block en anglais) ou de type « en ligne » (inline en anglais). Comme il s'agit d'une caractéristique de présentation, elle est aujourd'hui spécifiée par CSS dans le module de spécification Flow Layout qui définit l'organisation visuelle par défaut des éléments (le « flux » normal). Les éléments en lignes n'occupent que l'espace entre leurs balises et s'insèrent dans le flux du contenu plutôt que de créer un nouveau « bloc » visuel. Dans cet article, nous verrons en détails ces éléments en ligne et leurs différences par rapport aux éléments de bloc.
Note : Un élément en ligne ne commence pas sur une nouvelle ligne et prend uniquement la largeur qui lui est nécessaire.
Éléments en ligne et éléments de bloc : un exemple
Un exemple vaut mieux qu'une longue explication. Voici pour commencer la feuille de style CSS que nous utiliserons :
.highlight {
background-color: #ee3;
}
Élément en ligne
Le fragment de code HTML qui suit utilise un élément en ligne avec la classe highlight
:
<p>
L'élément span qui suit est un
<span class="highlight">élément en ligne</span> ; son arrière-plan est coloré
afin d'illustrer la zone couverte par cet élément en ligne.
</p>
Dans cet exemple, l'élément <p>
(le paragraphe) est un élément de bloc qui contient du texte. Dans ce texte, on a un élément <span>
qui est un élément en ligne. L'élément <span>
étant un élément en ligne, le paragraphe est bien affiché sous la forme d'un flux de texte sans rupture :
Élément de bloc
Transformons l'exemple précédent pour passer d'un élément <span>
à un élément <div>
qui est un élément de bloc :
<p>L'élément div qui suit est un <div class="highlight">élément de bloc</div> ;
son arrière-plan est coloré afin d'illustrer la zone couverte par cet élément de
bloc.</p>
Et voici le résultat qu'on obtient :
On voit ici que l'élément <div>
modifie complètement la disposition du texte et le découpe en trois parties : une partie avant le <div>
, une partie constituée avec le texte de l'élément <div>
et une dernière partie ensuite.
Modifier le type d'un d'élément
Il est possible de choisir le mode d'affichage d'un élément afin de modifier son comportement par défaut grâce à la propriété CSS display
. En passant la valeur de display
de "inline"
à "block"
, on peut indiquer au navigateur d'afficher l'élément comme une boîte de bloc plutôt que comme une boîte en ligne. Attention, l'élément ne sera plus affiché de la même façon, vérifiez le résultat obtenu. De plus, ce changement n'impactera pas la catégorie et le modèle de contenu de l'élément : utiliser display:block
sur un élément <span>
ne permettra toujours pas de lui imbriquer un élément <div>
à l'intérieur.
Différences conceptuelles
Voici, en résumé, les différences conceptuelles entre les éléments en ligne et les éléments de bloc :
- Modèle de contenu
-
En général, les éléments en ligne ne peuvent contenir que des données ou d'autres éléments en ligne. Il n'est pas possible de placer des éléments de bloc à l'intérieur d'éléments en ligne.
- Formatage
-
Par défaut, les éléments en ligne n'introduisent pas de saut de ligne dans le flux du document. En revanche, les éléments de bloc provoquent un saut de ligne (ce comportement peut être modifié grâce au CSS).
Liste des éléments en ligne
Bien que cette notion de présentation soit désormais (depuis HTML5) portée par le CSS et remplacée par les catégories de contenu, voici les éléments HTML qui se comportent par défaut comme des éléments en ligne:
<a>
<abbr>
<acronym>
<audio>
(si les contrôles sont visibles)<b>
<bdi>
<bdo>
<big>
<br>
<button>
<canvas>
<cite>
<code>
<data>
<datalist>
<del>
<dfn>
<em>
<embed>
<i>
<iframe>
<img>
<input>
<ins>
<kbd>
<label>
<map>
<mark>
<meter>
<noscript>
<object>
<output>
<picture>
<progress>
<q>
<ruby>
<s>
<samp>
<script>
<select>
<slot>
<small>
<span>
<strong>
<sub>
<sup>
<svg>
<template>
<u>
<tt>
<var>
<video>
<wbr>