228 votes

Quelle est la différence entre <p> et <div> ?

Quelle est la différence entre <p> et <div> ?

Peuvent-ils être utilisés de manière interchangeable ? Quelles sont les applications ?

39 votes

Dans tout HTML/XHTML valide, transitionnel ou strict, vous ne pouvez pas imbriquer un <p> à l'intérieur d'un autre <p>, donc <div> et <p> ne sont pas interchangeables.

5 votes

Byran - vous avez touché du doigt le problème essentiel avec ces réponses "sémantiques". Le problème est que le HTML contraint artificiellement les <p>s afin qu'ils se comportent différemment. S'il ne s'agissait que d'éléments de bloc avec une signification sémantique, tout irait bien. Mais pourquoi vous empêcher d'intégrer, par exemple, une illustration dans un paragraphe ?

2 votes

@117700 avez-vous envisagé de modifier la réponse acceptée ?

335voto

Andrew Hare Points 159332

Ils ont sémantique différence - une <div> est conçu pour décrire un conteneur de données alors qu'un élément <p> est conçu pour décrire un paragraphe de contenu.

La sémantique fait toute la différence. Le HTML est un langage de balisage, ce qui signifie qu'il est conçu pour "baliser" le contenu d'une manière qui soit significative pour le consommateur du balisage. La plupart des développeurs pensent que la sémantique du document correspond aux styles et au rendu par défaut que les navigateurs appliquent à ces éléments, mais ce n'est pas le cas.

Les éléments que vous choisissez pour baliser votre contenu devraient décrire le contenu. N'annotez pas votre document en fonction de l'apparence qu'il devrait avoir, mais en fonction de ce qu'il est.

Si vous avez besoin d'un conteneur générique uniquement pour des raisons de mise en page puis utiliser un <div> . Si vous avez besoin d'un élément pour décrire un paragraphe de contenu, utilisez une balise <p> .

Note : _Il est important de comprendre que les deux <div> y <p> sont éléments de niveau bloc ce qui signifie que la plupart des navigateurs les traiteront de manière similaire._

0 votes

D'après mon expérience, si vous souhaitez mettre en page un élément de contenu différemment d'un autre élément de contenu, ces deux éléments sont sémantiquement distincts et doivent donc être balisés de manière indépendante. de toute façon . Si en revanche, ils ne sont pas sémantiquement distincts, alors ils devraient probablement être présentés ensemble. Dans les deux cas, il n'est pas nécessaire d'ajouter un élément à des fins de mise en page, car dans le premier cas, il aurait déjà dû être présent et dans le second, il n'y a pas de mise en page. Mais bon, je suis un puriste et mes sites ressemblent toujours à des flashbacks de 1995.

9 votes

Quand vous dites d'utiliser <p> pour "paragraphe de contenu", le contenu doit-il être sous forme de lettres et de mots ? N'utiliseriez-vous jamais <p> pour décrire un autre type de contenu, comme des images ?

3 votes

@drs : Le contenu autorisé pour <p> est le "contenu phrasé", qui consiste en des éléments phrasés mélangés à des données de caractères normales. Btw, les images appartiennent aux éléments de phraséologie, vous pouvez donc les utiliser à l'intérieur de <p>. Références : w3.org/TR/html-markup/p.html y w3.org/TR/html-markup/common-models.html#common.elem.phrasing . HTH

87voto

ceejayoz Points 85962

Toutes les réponses sont bonnes, mais il y a une différence que je n'ai pas encore vue mentionnée, et c'est la façon dont les navigateurs les rendent par défaut. Les principaux navigateurs Web affichent un <p> avec une marge au-dessus et au-dessous du paragraphe. A <div> sera rendu sans aucune marge.

12 votes

Si vous voulez contrôler le rendu, vous devriez utiliser les CSS. Ne vous fiez pas aux valeurs par défaut des navigateurs.

23 votes

La question demandait quelles différences il y a entre les balises DIV et P. Il s'agit d'une question importante pour quiconque n'utilise pas une réinitialisation CSS, d'autant plus qu'elle peut ne pas être évidente pour quelqu'un qui n'utilise qu'un seul navigateur.

5 votes

Merci pour cette précision. Je cherchais exactement cette différence, car l'utilisation de la balise P faisait apparaître le texte avec une marge en haut (et en bas probablement), et je me demandais donc d'où venait cet espace. J'avais besoin de me débarrasser de cet espace.

70voto

cletus Points 276888

<p> indique un paragraphe et a une signification sémantique.

<div> est simplement un bloc contenant d'autres contenus.

Tout ce qui peut aller dans un <p> peut aller dans un <div> mais l'inverse n'est pas vrai. <div> peuvent avoir des éléments de niveau bloc comme enfants. <p> éléments ne le peuvent pas.

Jetez un coup d'œil à la DTD HTML .

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
<!ELEMENT P - O (%inline;)*            -- paragraph -->

8 votes

On ne peut donc pas avoir un <h1> dans un <p> ?

1 votes

Commentaire très utile.

11voto

Ashish Agarwal Points 1606

La seule différence entre ces deux éléments est d'ordre sémantique. Les deux éléments, par défaut, se voient appliquer la règle CSS display : block (donc block-level), rien de plus (sauf une marge supplémentaire dans certains cas). Cependant, comme nous l'avons déjà mentionné, ils sont tous deux très différents en termes de sémantique.

En <p> comme son nom l'indique, est destiné aux paragraphes. Ainsi , <p> doit être utilisé lorsque vous souhaitez créer des blocs de texte de paragraphe.

En <div> Cependant, cet élément n'a que peu ou pas de signification sémantique et peut donc être utilisé comme un élément générique de niveau bloc. Le plus souvent, les gens l'utilisent dans les mises en page parce qu'il n'a aucune signification sémantique et peut être utilisé pour tout ce qui peut nécessiter un élément de niveau bloc.

Lien pour plus de détails

3 votes

Il n'y a pas besoin de cette dernière phrase. La quasi-totalité des questions posées sur ce site pourraient probablement être trouvées sur Google, mais ce n'est pas le but. Le but est de créer une ressource pour les développeurs qui se poseront les mêmes questions à l'avenir.

0 votes

Oui, mais il aurait pu lancer une discussion avec des informations pertinentes, de toute façon, je vais l'éditer.

1 votes

Étant donné que les éléments p et div sont des éléments de bloc, comment se fait-il que lorsqu'un élément h1 est imbriqué dans un div, il hérite des styles, mais pas lorsqu'il est imbriqué dans un p ? Merci de votre compréhension.

9voto

Hoque Points 2031

Il serait peut-être préférable de consulter la norme conçue par W3.org. Voici l'adresse : http://www.w3.org/

Une balise "DIV" peut envelopper une balise "P" alors qu'une balise "P" ne peut pas envelopper une balise "DIV" - pour autant que je connaisse cette différence. Il peut y avoir d'autres différences.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X