Quand utiliser <span> à la place <p>?

94

Comme la question l'indique, si j'ai du texte que je souhaite ajouter dans le HTML, quand dois-je utiliser <p>et quand dois-je l'utiliser <span>?

Affar
la source

Réponses:

91

Vous devez garder à l'esprit que le HTML est destiné à DÉCRIRE le contenu qu'il contient.

Donc, si vous souhaitez transmettre un paragraphe, faites-le.

Votre comparaison n'est pas tout à fait juste, cependant. La comparaison la plus directe serait

Quand utiliser un <div>au lieu d'un <p>?

car les deux sont des éléments de niveau bloc.

A <span>est en ligne, un peu comme une ancre ( <a>) <strong>,, accentuation ( <em>), etc., alors gardez à l'esprit que par sa nature par défaut à la fois en html et en écriture naturelle, un paragraphe provoquera une coupure avant et après lui-même, comme un <div>.

Parfois, lorsque vous stylisez des choses - des choses en ligne - a <span>est génial pour vous donner quelque chose à «accrocher» le css, mais c'est autrement une balise vide sans signification sémantique ou stylistique.

Désordonné
la source
7
Lorsque vous comparez des éléments en ligne et en bloc, veillez à ne pas décrire les aspects visuels. Comme l'indique la spécification HTML5 , a ppeut ne pas nécessairement être stylé avec des sauts de ligne environnants, par exemple, il pourrait être suivi d'un symbole de pilcrow en ligne . Les termes «en ligne» et «bloquer» ne signifient rien non plus pour les utilisateurs aveugles. Faites plutôt la distinction entre le contenu de flux et le contenu de phrasé (voir ce lien ).
chharvey
3
En outre, padding-left se comporte différemment psur span. Sur les paragraphes, le remplissage affecte chaque ligne (bloc de texte), tandis que sur span, il n'affecte que la première ligne.
diynevala
95

Sémantiquement, vous utilisez des <p>balises pour indiquer les paragraphes. <span>est utilisé pour appliquer un style et / ou des classes CSS à une section arbitraire de texte et d'éléments en ligne.

cletus
la source
13

La <p>balise est un paragraph, et en tant que tel, c'est un élément de bloc ( tel quel , par exemple, h1et div), alors que spanc'est un élément en ligne (comme, par exemple, bet a)

Les éléments de bloc par défaut créent des espaces au-dessus et en dessous d'eux-mêmes, et rien ne peut être aligné à côté d'eux, sauf si vous leur floatattribuez un attribut.

Les éléments en ligne traitent des étendues de texte à l'intérieur d'un paragraphe. Ils n'ont généralement pas de marges et, en tant que tels, vous ne pouvez pas, par exemple, widthleur attribuer un.

David Hedlund
la source
oui, span n'a pas de marges et donc, il est bon comme cellule de tableau (td) d'avoir la possibilité d'utiliser le balisage html
Igor Fomenko
6

Span est complètement non sémantique. Il n'a aucun sens et ne sert que d'élément aux effets cosmétiques.

Les paragraphes ont une signification sémantique - ils indiquent à une machine (comme un navigateur ou un lecteur d'écran) que le contenu qu'ils encapsulent est un bloc de texte et a la même signification qu'un paragraphe de texte dans un livre.


la source
5

Sémantiquement parlant, ap est une balise de paragraphe et doit être utilisée pour formater un paragraphe de texte. Un span est un changement de formatage en ligne qui n'est pas géré sémantiquement.

Matt Kellogg
la source
5

Une étendue est un élément de mise en forme en ligne qui n'a PAS de saut de ligne au-dessus ou en dessous.

Un p est un élément de bloc qui A un saut de ligne implicite au-dessus et au-dessous.

http://w3schools.com/tags/default.asp

David Glass
la source
4

Une explication pratique: par défaut, <p> </p>ajoutera des sauts de ligne avant et après le texte inclus (cela crée donc un paragraphe). <span>ne fait pas cela, c'est pourquoi il est appelé inline .

Félix Kling
la source
3

La balise p désigne un élément de paragraphe. Il a des marges / rembourrage qui lui sont appliqués. Un span est une balise en ligne sans style. Une différence importante est que p est un élément de bloc lorsque la travée est en ligne, ce qui signifie qu'il <p>Hi</p><p>There</p>apparaît sur différentes lignes lorsqu'il <span>Hi</span><span>There</span>s'enroule côte à côte.

statenjason
la source
3

Lorsque nous utilisons du texte normal à ce moment-là, nous voulons une <p>balise. Lorsque nous utilisons du texte normal avec des effets à ce moment-là, nous voulons une <span>balise

Suhasini
la source
2

<span> est une balise en ligne, une <p> est une balise de bloc, utilisée pour les paragraphes. Les navigateurs afficheront une ligne vide sous un paragraphe, tandis que les <span> seront rendus sur la même ligne.

Richard H
la source
0

La balise est un élément de niveau bloc, mais la balise est un élément en ligne. Normalement, nous utilisons la balise span pour styliser à l'intérieur des éléments de bloc, mais vous n'avez pas besoin d'utiliser la balise span pour le style en ligne. convertir un élément de bloc en élément en ligne à l'aide de "display: inline"

Pathirage de Lakruwan
la source
-6
p {
    float: left;
    margin: 0;
}

Aucun espacement ne sera autour, il ressemble à la portée.

gasyoun
la source