Was ist der Unterschied zwischen <p> und <div>?

187

Was ist der Unterschied zwischen <p> und <div>?

Können sie austauschbar verwendet werden? Was sind die Anwendungen?

l - '' '' '' - '' '' '' '' '' '' ''
quelle
31
In einem gültigen HTML / XHTML, vorübergehend oder streng, können Sie ein <p> nicht in einem anderen <p> verschachteln, sodass <div> und <p> nicht ausgetauscht werden.
Byran Zaugg
3
Byran - Sie haben mit diesen "semantischen" Antworten das wesentliche Problem gelöst. Das Problem ist, dass HTML <p> künstlich einschränkt, sodass sie sich unterschiedlich verhalten. Wenn sie nur Blockelemente plus semantische Bedeutung wären, wäre das in Ordnung. Aber warum sollten Sie verhindern, dass Sie beispielsweise eine Illustration in einen Absatz einbetten?
Dkretz
2
@ 117700 Haben Sie darüber nachgedacht, die akzeptierte Antwort zu ändern?
Karl Richter
Denken Sie daran, <div></div>erfordert offene und schließende Tags, <p>nicht unter bestimmten Umständen
Mark Schultheiss

Antworten:

-26

Der vorherige Code war

<p class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></p>

Also muss ich es ändern

<div class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></div>

Es war die einfache Lösung. Und das CSS für den obigen Code ist

.item {
    position: relative;
    border: 1px solid green;
    height: 30px;
}

.item .name {
    position: absolute;
    top: 0px;
    left: 0px;
}

.item .price {
    position: absolute;
    right: 0px;
    bottom: 0px;
}

Das div-Tag kann also andere Elemente enthalten. P sollte nicht dazu gezwungen werden.

Kazi T Ahsan
quelle
3
Ich weiß wirklich nicht was du meinst. "In der Site": Welche Site? "... damit es funktioniert": Was bedeutet "Arbeit"? Was ist das beabsichtigte Rendering?
Marcel Korpel
4
Das klingt für mich völlig unlogisch: pElemente können andere Inline-Elemente enthalten (die HTML 5-Spezifikation spricht von Phrasierungselementen (siehe 7.3) ), von denen spanunter anderem eines davon ist. Darüber hinaus ist dies keine Antwort auf die Frage des OP: Es sagt nichts über den Unterschied zwischen pund aus div. Und bitte lesen Sie Wie funktionieren Kommentarantworten?
Marcel Korpel
@MarcelKorpel Warum ist das dann die akzeptierte Antwort? Nicht umstritten, nur gefragt, warum es Inkonsistenzen gibt.
Anshul
3
@Anshul Anscheinend hat etwas für das OP funktioniert, aber es beantwortet die Frage nicht. Schauen Sie sich auch die Punktzahl dieser Antwort an: -16 im Moment. Falls Sie es nicht wissen: Das OP ist der einzige, der eine Antwort akzeptieren kann, während jeder in der Community eine Antwort nach oben oder unten abstimmen kann.
Marcel Korpel
Spät zur Hassparty, aber: <p>Tags enthalten sehr oft andere Elemente wie <strong>oder <em>usw. Der Inhalt eines <p>Tags sollte dem entsprechen, was sein Name impliziert: ein Textabschnitt. Textabschnitte enthalten häufig zusätzliche Markups. Daran ist nichts auch nur annähernd ungewöhnlich oder falsch.
Dave Newton
296

Sie haben semantische Unterschiede - ein <div>Element beschreibt einen Datencontainer, während ein <p>Element einen Inhaltsabschnitt beschreibt.

Die Semantik macht den Unterschied. HTML ist eine Auszeichnungssprache, dh, es wurde entwickelt, um Inhalte auf eine Weise zu "markieren", die für den Verbraucher des Auszeichners von Bedeutung ist. Die meisten Entwickler glauben, dass die Semantik des Dokuments die Standardstile und das Rendering sind, die Browser auf diese Elemente anwenden, aber das ist nicht der Fall.

Die Elemente, die Sie zum Markieren Ihres Inhalts auswählen, sollten den Inhalt beschreiben . Markieren Sie Ihr Dokument nicht danach, wie es aussehen soll - markieren Sie es danach, wie es ist.

Wenn Sie einen generischen Container benötigen rein für Layoutzweckedann benutze a <div>. Wenn Sie ein Element zur Beschreibung eines Inhaltsabschnitts benötigen, verwenden Sie a <p>.

Hinweis: Es ist wichtig zu verstehen, dass beide Elemente<div> und Elemente auf Blockebene<p> sind. Dies bedeutet, dass die meisten Browser sie auf ähnliche Weise behandeln.

Andrew Hare
quelle
Ich habe die Erfahrung gemacht, dass, wenn Sie einen Inhalt anders als einen anderen Inhalt gestalten möchten, diese beiden semantisch unterschiedlich sind und daher ohnehin unabhängig voneinander gekennzeichnet werden sollten . Wenn OTOH nicht semantisch verschieden ist, sollten sie wahrscheinlich zusammen angelegt werden. In beiden Fällen muss kein Element für Layoutzwecke hinzugefügt werden, da es im ersten Fall bereits vorhanden sein sollte und im zweiten Fall kein Layout vorhanden ist. Aber andererseits bin ich Purist und meine Seiten sehen immer wie Rückblenden bis 1995 aus.
Jörg W Mittag
5
Wenn Sie sagen, dass <p>für "Absatz des Inhalts" verwendet werden soll, muss der Inhalt in Form von Buchstaben und Wörtern vorliegen? Würden Sie jemals <p>eine andere Art von Inhalten wie Bilder beschreiben?
Dr.
1
@drs: Zulässiger Inhalt für <p> ist "Phrasierungsinhalt", der aus Phrasierungselementen besteht, die mit normalen Zeichendaten vermischt sind. Übrigens gehören Bilder zu Phrasierungselementen, sodass Sie sie in <p> verwenden können. Referenzen: w3.org/TR/html-markup/p.html und w3.org/TR/html-markup/common-models.html#common.elem.phrasing . HTH
Paolo
2
Sie haben vergessen zu erwähnen, dass Sie ps nicht verschachteln können, solange Sie mit divs können. Was die Einstellungen für "Layoutinformationen nicht in HTML einschließen" betrifft: Es ist nicht möglich, eine HTML-Datei zu schreiben, ohne sich darum zu kümmern, wie sie aussehen soll. Ihre Wahl der Reihenfolge und Verschachtelung von Divs hat immer einen Einfluss - es sei denn, Sie schreiben ein Javascript, das Ihre Seite zerreißt und neu strukturiert. So sieht div als „generische Container rein für Layoutzwecke “ ist die korrekte Formulierung.
Masterxilo
Was ist, wenn ich lieber divanstelle von verwenden würde p?
Melab
66

Alle guten Antworten, aber es gibt einen Unterschied, den ich noch nicht erwähnt habe, und so rendern Browser sie standardmäßig. Die wichtigsten Webbrowser rendern ein <p>Tag mit einem Rand über und unter dem Absatz. Ein <div>Tag wird ohne Rand gerendert.

ceejayoz
quelle
10
Wenn Sie das Rendern steuern möchten, sollten Sie CSS verwenden. Verlassen Sie sich nicht auf die aktuellen Standardeinstellungen des Browsers.
Mechanische Schnecke
15
Bei der Frage wurde gefragt, welche Unterschiede zwischen DIV- und P-Tags bestehen. Dies ist von Bedeutung für alle, die keinen CSS-Reset verwenden, insbesondere da dies für jemanden, der nur einen Browser verwendet, möglicherweise nicht offensichtlich ist.
Ceejayoz
3
Danke für die Klarstellung. Ich habe nach genau diesem Unterschied gesucht, da die Verwendung des P-Tags dazu führte, dass Text mit einem Rand oben (und wahrscheinlich unten) angezeigt wurde, und mich fragte, woher dieser Raum kommt. Musste den Raum loswerden.
WhatsInAName
@ceejayoz Rand? Wie können wir das sehen?
JAVA
57

<p> gibt einen Absatz an und hat eine semantische Bedeutung.

<div> ist einfach ein Blockcontainer für andere Inhalte.

Alles, was in ein <p>gehen kann, kann in ein gehen, <div>aber das Gegenteil ist nicht wahr. <div>Tags können als untergeordnete Elemente Elemente auf Blockebene haben. <p>Elemente können nicht.

Schauen Sie sich die HTML-DTD an .

<!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 -->
Cletus
quelle
3
Sie können also kein <h1> in einem <p> haben?
Koray Tugay
8

Der einzige Unterschied zwischen den beiden Elementen ist die Semantik. Auf beide Elemente wird standardmäßig die CSS-Regel angezeigt: Block (daher Blockebene) wird auf sie angewendet; nichts mehr (außer etwas mehr Spielraum in einigen Fällen). Wie bereits erwähnt, unterscheiden sich beide jedoch stark in Bezug auf die Semantik.

Das <p>Element ist, wie der Name schon sagt, für Absätze. Daher <p>sollte verwendet werden, wenn Sie Absätze von Absatztext erstellen möchten.

Das <div>Element hat jedoch semantisch wenig bis gar keine Bedeutung und kann daher als generisches Element auf Blockebene verwendet werden. Am häufigsten wird es in Layouts verwendet, da es semantisch bedeutungslos ist und im Allgemeinen für alles verwendet werden kann, was Sie möglicherweise für einen Block benötigen. Ebenenelement für.

Link für mehr Details

Ashish Agarwal
quelle
3
Der letzte Satz ist nicht nötig. Fast alle Fragen auf dieser Seite könnten wahrscheinlich gegoogelt werden, aber das ist nicht der Punkt. Es geht darum, in Zukunft eine Ressource für Entwickler mit denselben Fragen zu erstellen.
Nickf
ya, aber er hätte eine Diskussion mit einigen relevanten Informationen beginnen können, auf jeden Fall wird es bearbeitet
Ashish Agarwal
1
Da sowohl p als auch div Blockelemente sind, warum erbt ein h1-Element, wenn es in einem div verschachtelt ist, die Stile, aber wenn es in ap verschachtelt ist, wird dies nicht der Fall sein? Vielen Dank
Rückkehr-1
@ Return-1 Ich weiß nicht genau, was in Ihrem Fall passiert, aber ein h1 ist ein Header, der keinen Inhalt formuliert und daher in einem Absatz nicht zulässig ist. Betrachten Sie gedruckten Text - er enthält Überschriften und Absätze, aber die Überschriften sind nicht Teil der Absätze.
Oskar Berggren
7

DIV ist ein generischer Container auf Blockebene, der alle anderen Block- oder Inline-Elemente enthalten kann, einschließlich anderer DIV-Elemente, während P Absätze (Text) umbrechen soll.

bdl
quelle
7

Es ist möglicherweise besser, den von W3.org entworfenen Standard zu sehen. Hier ist die Adresse: http://www.w3.org/

Ein "DIV" -Tag kann das "P" -Tag umschließen, während ein "P" -Tag das "DIV" -Tag nicht umschließen kann - soweit ich diesen Unterschied kenne. Es kann weitere Unterschiede geben.

Nazmul
quelle
5

Stellen Sie sich DIVein Gruppierungselement vor. Sie fügen Elemente in ein DIV-Element ein, damit Sie deren Ausrichtung festlegen können

Während "p"ist einfach, einen neuen Absatz zu erstellen.

Suraj Chandran
quelle
3

<p> stellt einen Absatz dar und <div> stellt eine 'Unterteilung' dar. Ich nehme an, der Hauptunterschied besteht darin, dass divs semantisch 'bedeutungslos' sind, wobei <p> ​​etwas darstellen soll, das sich auf den Text selbst bezieht.

Sie möchten beispielsweise keine verschachtelten <p> s haben, da dies keinen großen semantischen Sinn ergibt (außer im Sinne von Zitaten), während die Benutzer verschachtelte <div> s für das Seitenlayout verwenden.

Laut Wikipedia

In HTML werden die Elemente span und div verwendet, wenn Teile eines Dokuments nicht durch andere HTML-Elemente semantisch beschrieben werden können.

Chad Okere
quelle
2

Ein pTag steht für einen Absatz, der normalerweise für Text verwendet wird. Ein divTag dient zur Unterteilung und wird im Allgemeinen zum Erstellen von Textabschnitten verwendet.

Daniel A. White
quelle
2

<p> wird semantisch für Text verwendet, Absätze normalerweise.

<div>wird für einen Block oder Bereich in einer Webseite verwendet. Zum Beispiel könnte es verwendet werden, um den Bereich eines Headers zu erstellen.

Sie könnten wahrscheinlich austauschbar verwendet werden, aber Sie sollten nicht.

Vectran
quelle