<p>と<div>の違いは何ですか?


187

<p>と<div>の違いは何ですか?

それらは交換可能に使用できますか?アプリケーションは何ですか?


31
トランジショナルまたはストリクトの有効なHTML / XHTMLでは、<p>を別の<p>内にネストすることはできないため、<div>と<p>は交換できません。
Byran Zaugg、2010

3
Byran-あなたはこれらの「セマンティック」な答えで本質的な問題を解決しました。問題は、HTMLが<p>を人工的に制約するため、動作が異なることです。それらがブロック要素と意味論的な意味だけの場合は問題ありません。しかし、なぜあなたが例えばイラストをパラグラフに埋め込むことを妨げるのですか?
dkretz 2011

2
@ 117700受け入れられた回答の変更を検討しましたか?
カールリヒター

特定の状況<div></div><p>はなく、開始タグと終了タグが必要であることに注意してください
Mark Schultheiss

回答:


-26

以前のコードは

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

だから私はそれを

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

それは簡単な修正でした。上記のコードのCSSは

.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;
}

したがって、divタグには他の要素を含めることができます。Pはそれを強制されるべきではない。


3
どういう意味かわかりません。「サイト内」:どのサイトですか?「…それを機能させる」:「機能」とはどういう意味ですか?意図されたレンダリングは何ですか?
Marcel Korpel、2010

4
これは私には完全に非論理的に聞こえます:p要素には他のインライン要素(フレージング要素の HTML 5スペックトーク(7.3を参照)含めることができます。また、これはOPの質問への答えではありません:それは違いについては何も教えてくれないとします。そして、コメント返信どのように機能しますか?spanpdiv
Marcel Korpel、2010

@MarcelKorpelなぜこれが受け入れられた答えなのですか?論争ではなく、なぜ矛盾があるのか​​と思っているだけです。
Anshul 2017

3
@AnshulどうやらOPには何かうまくいったようですが、質問には答えません。また、この回答のスコアも見てください。現時点では-16です。わからない場合は、回答を受け入れることができるのはOPだけですが、コミュニティの全員が回答を上または下に投票できます。
Marcel Korpel 2017

後期憎悪のパーティーに、しかし:<p>タグは非常に多くの場合、他の要素が含まれている、のような<strong>または<em>のコンテンツ等<p>のテキストの段落を:タグは、その名前が示す何をする必要があります。テキストの段落には、追加のマークアップが含まれていることがよくあります。これには、珍しいことや間違ったことは何もありません。
デイブニュートン

296

彼らは持っている意味的な違いを- <div>一方の要素は、データのコンテナを記述するために設計された<p>要素は、コンテンツの段落を記述するために設計されています。

セマンティクスはすべての違いを生み出します。HTMLはマークアップ言語です。つまり、HTMLは、マークアップの利用者にとって意味のある方法でコンテンツを「マークアップ」するように設計されています。ほとんどの開発者は、ドキュメントのセマンティクスがブラウザがこれらの要素に適用するデフォルトのスタイルとレンダリングであると信じていますが、そうではありません。

コンテンツをマークアップするために選択する要素は、コンテンツを説明する必要があります。 外観に基づいてドキュメントをマークアップしないでください。ドキュメントの内容に基づいてマークアップしてください。

汎用コンテナが必要な場合 純粋にレイアウト目的で次にを使用し<div>ます。コンテンツの段落を説明する要素が必要な場合は、を使用してください<p>

注: ブロックレベルの要素であることを理解することが重要です。つまり、ほとんどのブラウザはそれらを同じように扱います。<div><p>


私の経験では、あるコンテンツを他のコンテンツとは異なるレイアウトにしたい場合、それらの2つは意味的に区別されるため、とにかく独立してマークアップする必要があります。OTOHの場合、それら意味的に区別されないため、おそらく一緒に配置する必要があります。どちらの場合も、レイアウト目的で要素を追加する必要はありません。最初のケースでは、そもそもそこにあるはずであり、2番目のケースでは、レイアウトが行われていないからです。しかし、再び、私は純粋主義者であり、私のサイトは常に1995
JörgW Mittag

5
<p>「コンテンツの段落」に使用する場合、コンテンツは文字と単語の形式である必要がありますか?<p>画像など、他の種類のコンテンツを説明するために使用しますか?
Drs 2013年

1
@drs:<p>で許可されるコンテンツは「通常の文字データ」と混合されたフレーズ要素で構成される「フレーズコンテンツ」です。ところで、画像はフレージングエレメントに属しているため、<p>内で使用できます。参照:w3.org/TR/html-markup/p.htmlおよびw3.org/TR/html-markup/common-models.html#common.elem.phrasing。HTH
パオロ

2
あなたはdivと一緒にできる間はpを入れ子にすることができないことを言及するのを忘れていました。「レイアウト情報をhtmlに含めない」という態度については、見た目を気にせずにhtmlファイルを作成することはできません。divの順序とネストの選択は常に影響を及ぼします-ページを引き裂いて再構成するJavaScriptを書かない限り。したがって、divを「純粋にレイアウト目的の一般的なコンテナ」と見なすことは、正しい表現です。
masterxilo 2014年

div代わりに使用したい場合はpどうなりますか?
Melab、

66

すべての良い答えですが、まだ言及していない違いが1つあります。それが、ブラウザがデフォルトでレンダリングする方法です。主要なWebブラウザーは<p>、段落の上下にマージンのあるタグをレンダリングします。<div>タグは、すべての任意のマージンなしでレンダリングされます。


10
レンダリングを制御する場合は、CSSを使用する必要があります。ブラウザの現在のデフォルトに依存しないでください。
機械式カタツムリ

15
DIVタグとPタグの違いは何かという質問です。これは、CSSリセットを使用していない人にとっては重要なものです。特に、1つのブラウザーだけを使用している人にとっては自明ではないかもしれません。
ceejayoz

3
説明をありがとう。Pタグを使用するとテキストが上部(および下部)に余白を付けて表示されるため、この正確な違いを探していたため、そのスペースがどこから来ているのか疑問に思っていました。スペースを取り除くために必要。
WhatsInAName 2013

@ceejayozマージン?どうやってそれを見ることができますか?
JAVA

57

<p> 段落を示し、意味的な意味があります。

<div> 他のコンテンツのブロックコンテナーです。

に入ることができるすべてのもの <p>ことができます<div>が、その逆は当てはまりません。<div>タグは、子としてブロックレベルの要素を持つことができます。<p>要素はできません。

HTML DTDを見てください。

<!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 -->

3
したがって、<p>に<h1>を含めることはできませんか?
Koray

8

2つの要素の唯一の違いはセマンティクスです。両方の要素には、デフォルトで、CSSルールが表示されます。これ以上はありません(場合によっては、余計な余白を除く)ただし、前述のように、どちらもセマンティクスの点で大きく異なります。

<p>要素は、その名前が多少わかるように、段落のです。したがって、<p>段落テキストのブロックを作成するときに使用する必要があります。

<div>それが意味的に無意味であり、あなたがブロック-を必要とするかもしれない一般的には何のために使用することができるので、最も一般的に、人々はレイアウト内で使用-要素は、しかし、意味的に意味し、したがって、一般的なブロックレベル要素として使用することができますにはほとんど持っていますレベル要素。

詳細はリンク


3
最後の文は必要ありません。このサイトのほとんどすべての質問はおそらくググることができますが、それはポイントではありません。ポイントは、将来同じ質問を持つ開発者のためのリソースを作ることです。
nickf

ええ、でも彼はいくつかの関連情報を使ってディスカッションを始めることができたでしょう、どんな方法でもそれを編集します
Ashish Agarwal

1
pとdivの両方がブロック要素であるため、h1要素がdiv内にネストされている場合、スタイルが継承されますが、apにネストされている場合は、そうでないのはなぜですか?ありがとう
リターン1

@ Return-1私はあなたのケースで正確に何が起こるかわかりませんが、h1はヘッダーです。これはフレージングコンテンツではないため、段落内では許可されません。印刷されたテキストを検討してください-ヘッダーと段落が含まれていますが、ヘッダーは段落の一部ではありません。
Oskar Berggren

7

DIVは、他のブロックまたはインライン要素(他のDIV要素を含む)を含むことができる一般的なブロックレベルのコンテナーですが、Pは段落(テキスト)をラップするためのものです。


7

W3.orgによって設計された標準を確認することをお勧めします。ここにアドレスがあります:http : //www.w3.org/

「DIV」タグは「P」タグをラップできますが、「P」タグは「DIV」タグをラップできません。これまでのところ、私はこの違いを知っています。他にも違いがあるかもしれません。


5

DIVグループ化要素と考えてください。要素をDIV要素に入れて、配置を設定できるようにします

一方"p"、新しい段落を作成するだけです。


3

<p>は段落を表し、<div>は「区切り」を表します。主な違いは、divが意味的には「無意味」であるということですが、<p>はテキスト自体に関連するものを表すことになっています。

たとえば、ネストされた<p>を使用することは望ましくありません。これは、意味的に意味をなさないためです(引用符の意味を除く)。一方、ページレイアウトにネストされた<div>を使用します。

ウィキペディアによると

HTMLでは、span要素とdiv要素を使用して、ドキュメントの一部を他のHTML要素で意味的に記述することができません。


2

pタグは、一般的にテキストに使用される、段落、ためです。divタグは、分割するためのものであり、一般的にテキストのセクションを作成するために使用されます。


2

<p> 意味的にはテキスト、通常は段落に使用されます。

<div>ウェブページのブロックまたはエリアに使用されます。たとえば、ヘッダーの領域を作成するために使用できます。

それらはおそらく互換的に使用できますが、使用すべきではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.