Div et span, différences d'usage pratique

Ces deux balises sont des conteneurs sont destinés à structurer le contenu, mais ils ont un rôle complémentaire et des règles de rendu différentes. Span sert surtout à associer un style à une partie d'un texte tandis que div sert à agencer le contenu de la page.

Les deux balises doivent avoir une balise de début et de fin, la forme réduite n'est pas reconnue évidemment.

N'est pas valide par exemple ceci:

<div class="xxx" /> // non valide

Le format seul valide est celui-ci:

<div class="xxx"></div>

La balise peut être vide.

Div

La balise <div> est un bloc, donc un objet rectangulaire qui ne peut être réparti sur plusieurs lignes.
Elle possède les attributs margin, padding, width, height.
Elle est précédée et suivie d'un saut de ligne.

Par exemple, le texte suivant:

<div>0000000<div>111111</div>222222</div>

s'affiche ainsi:

0000000
111111
222222

Span

La balise <span> est inline, elle s'inscrit dans le flux du contenu, peut être répartie sur plusieurs lignes.
On ne peut lui spécifier une hauteur ni une largeur ni l'entourer d'une marge.
Elle peut être placée à l'intérieur d'un paragraphe pour délimiter une partie de celui-ci sans affecter en soi l'apparence du texte.

<span> n'a pas de saut de ligne et le texte suivant:

<p><span>0000000<span>111111</span>222222</span></p>

s'affiche donc ainsi:

0000000111111222222

Margin

On ne peut pas attribuer une marge externe avec l'attribut margin.

<p>
<span style="border:1px dotted black">0000000
<span style="margin:8px;background:green;">111111</span>
222222</span>
</p>

s'affiche ainsi:

0000000111111222222

Avec Internet Explorer (avant IE9), la marge est effective verticalement et horizontalement.
Avec Chrome et Firefox elle ne s'affiche pas, conformément au standard.

Sans la marge cela s'affiche ainsi:

0000000111111222222

Height et width

Les attributs de largeur et hauteur sont reconnus par IE avant la version 9 mais n'ont aucun effet avec Firefox et Chrome et doivent être oubliés:

<p>
<span style="border:1px dotted black">0000000
<span style="height:32px;width:100px;background:green;">111111</span>
222222</span>
</p>

0000000111111222222

Padding

<p><span style="border:1px dotted black">0000000
<span style="padding:8px;background:green;">111111</span>
222222</span></p> 

0000000111111222222

On voit que la marge interne est effective sur tous les navigateurs.

Plus d'information

© 2010-2012 Xul.fr