Qual è la differenza tra <p> e <div>?


188

Qual è la differenza tra <p> e <div>?

Possono essere usati in modo intercambiabile? Quali sono le applicazioni?


32
In qualsiasi HTML / XHTML valido, di transizione o rigoroso, non è possibile nidificare un <p> all'interno di un altro <p>, quindi <div> e <p> non sono interscambi.
Byran Zaugg,

3
Byran: hai risolto il problema essenziale con queste risposte "semantiche". Il problema è che HTML limita artificialmente <p> s in modo che si comportino diversamente. Se fossero solo elementi di blocco più significato semantico, sarebbe ok. Ma perché impedirti, ad esempio, di incorporare un'illustrazione in un paragrafo?
dkretz,

2
@ 117700 hai pensato di cambiare la risposta accettata?
Karl Richter,

Tieni presente che <div></div>richiede tag aperti e chiusi, <p>non in circostanze specifiche
Mark Schultheiss,

Risposte:


-26

Il codice precedente era

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

Quindi devo cambiarlo in

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

È stata la soluzione semplice. E il CSS per il codice sopra è

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

Quindi il tag div può contenere altri elementi. P non dovrebbe essere costretto a farlo.


3
Davvero non capisco cosa intendi. "Nel sito": quale sito? "... per farlo funzionare": cosa significa "lavoro"? Qual è il rendering previsto?
Marcel Korpel,

4
Mi sembra completamente illogico: gli pelementi possono contenere altri elementi incorporati (la specifica HTML 5 parla di elementi di fraseggio (vedi 7.3) ), di cui spanè uno di questi, tra molti altri. Inoltre, questa non è una risposta alla domanda del PO: non dice nulla sulla differenza tra pe div. E leggi come funzionano le risposte ai commenti?
Marcel Korpel,

@MarcelKorpel Perché questa è la risposta accettata allora? Non contestare, solo chiedersi perché ci sia incoerenza.
Anshul,

3
@Anshul Apparentemente qualcosa ha funzionato per l'OP, ma non risponde alla domanda. Guarda anche il punteggio di questa risposta: -16 al momento. Nel caso in cui non lo sappiate: l'OP è l'unico che può accettare una risposta, mentre tutti nella comunità possono votare una risposta su o giù.
Marcel Korpel, il

In ritardo alla festa dell'odio, ma: i <p>tag molto spesso contengono altri elementi, come <strong>o <em>ecc. Il contenuto di un <p>tag dovrebbe essere ciò che implica il suo nome: un paragrafo di testo. I paragrafi di testo contengono spesso markup aggiuntivi. Non c'è nulla di lontanamente insolito o sbagliato in questo.
Dave Newton,

298

Hanno una differenza semantica : un <div>elemento è progettato per descrivere un contenitore di dati, mentre un <p>elemento è progettato per descrivere un paragrafo di contenuto.

La semantica fa la differenza. L'HTML è un linguaggio di markup che significa che è progettato per "contrassegnare" il contenuto in modo significativo per il consumatore del markup. La maggior parte degli sviluppatori ritiene che la semantica del documento siano gli stili e il rendering predefiniti che i browser applicano a questi elementi, ma non è così.

Gli elementi che scegli di contrassegnare i tuoi contenuti dovrebbero descriverli . Non contrassegnare il documento in base a come dovrebbe apparire, contrassegnarlo in base a ciò che è.

Se hai bisogno di un contenitore generico puramente per scopi di layoutquindi usa a <div>. Se hai bisogno di un elemento per descrivere un paragrafo di contenuto, usa a <p>.

Nota: E 'importante capire che sia <div>e <p>sono elementi block-level , che significa che la maggior parte dei browser trattarli in modo simile.


La mia esperienza è stata che, se si desidera il layout qualche pezzo di contenuto diverso rispetto qualche altro pezzo di contenuti, quei due sono semanticamente distinte e quindi dovrebbero essere marcati indepedently comunque . Se OTOH, non sono semanticamente distinti, allora dovrebbero probabilmente essere disposti insieme. In entrambi i casi, non è necessario aggiungere un elemento ai fini del layout, poiché nel primo caso dovrebbe essere già stato lì per iniziare e nel secondo caso non è in corso il layout. Ma di nuovo, sono un purista e i miei siti sembrano sempre dei flashback del 1995.
Jörg W Mittag

5
Quando dici di usare <p>per "paragrafo del contenuto", il contenuto deve essere in forma di lettere e parole? Utilizzeresti mai <p>per descrivere qualche altro tipo di contenuto, come le immagini?
drs

1
@drs: Il contenuto consentito per <p> è "Contenuti di frase", che consiste in elementi di fraseggiati mescolati con normali dati di caratteri. A proposito, le immagini appartengono agli elementi del fraseggio in modo da poterle usare all'interno di <p>. Riferimenti: w3.org/TR/html-markup/p.html e w3.org/TR/html-markup/common-models.html#common.elem.phrasing . HTH
Paolo,

2
Hai dimenticato di dire che non puoi nidificare p mentre puoi con div. Per quanto riguarda il tipo di atteggiamento "non includere le informazioni di layout nel codice HTML": non è possibile scrivere un file HTML senza preoccuparsi di come dovrebbe apparire. La tua scelta dell'ordine e la nidificazione dei div avranno sempre un'influenza, a meno che tu non scriva qualche javascript che strappa la tua pagina e la ristruttura. Così vedendo div come "un contenitore generico per puro di layout scopi " è la formulazione corretta.
masterxilo,

E se preferissi usare divinvece di p?
Melab,

66

Tutte buone risposte, ma c'è una differenza che non ho ancora visto menzionato, ed è così che i browser le visualizzano di default. I principali browser Web visualizzeranno un <p>tag con margine sopra e sotto il paragrafo. Un <div>tag verrà reso senza alcun margine.


10
Se vuoi controllare il rendering, dovresti usare CSS. Non fare affidamento sulle impostazioni predefinite correnti dei browser.
Lumaca meccanica

15
La domanda ha posto quali differenze ci sono tra i tag DIV e P. Questo è significativo per chiunque non utilizzi un ripristino CSS, soprattutto perché potrebbe non essere ovvio per qualcuno che utilizza un solo browser.
Ceejayoz,

3
Grazie per il chiarimento. Stavo cercando questa esatta differenza poiché l'uso del tag P stava facendo apparire il testo con margine in alto (e probabilmente in basso), quindi mi chiedevo da dove venisse quello spazio. Necessario per sbarazzarsi dello spazio.
WhatsInAName

Margine @ceejayoz? come possiamo vederlo?
JAVA,

58

<p> indica un paragrafo e ha un significato semantico.

<div> è semplicemente un contenitore di blocchi per altri contenuti.

Tutto ciò che può andare in a <p>può andare in a <div>ma non è vero il contrario. <div>i tag possono avere elementi a livello di blocco come elementi secondari. <p>gli elementi non possono.

Dai un'occhiata al 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 -->

3
Quindi non puoi avere un <h1> in un <p>?
Koray Tugay,

8

L'unica differenza tra i due elementi è la semantica. Entrambi gli elementi, per impostazione predefinita, hanno la visualizzazione della regola CSS: blocco (quindi a livello di blocco) applicato a loro; niente di più (tranne qualche margine in più in alcuni casi). Tuttavia, come già detto, entrambi differiscono notevolmente in termini di semantica.

L' <p>elemento, come suggerisce il nome in qualche modo, è per i paragrafi. Pertanto, <p>dovrebbe essere utilizzato quando si desidera creare blocchi di testo di paragrafo.

L' <div>elemento, tuttavia, ha poco o nessun significato semanticamente e quindi può essere usato come un elemento a livello di blocco generico: più comunemente, le persone lo usano all'interno di layout perché è insignificante semanticamente e può essere usato per qualsiasi cosa che potresti richiedere un blocco- elemento di livello per.

Link per maggiori dettagli


3
Non è necessario per l'ultima frase. Quasi tutte le domande su questo sito potrebbero probabilmente essere cercate su Google, ma non è questo il punto. Il punto è creare una risorsa per gli sviluppatori con le stesse domande in futuro.
Nickf

sì, ma avrebbe potuto iniziare una discussione con alcune informazioni rilevanti, comunque lo modificherà
Ashish Agarwal

1
Poiché sia ​​p che div sono elementi a blocchi, perché quando un elemento h1 è nidificato all'interno di un div, erediterà gli stili ma quando nidificato in ap non lo farà? Grazie
Ritorno-1

@ Return-1 Non so che cosa succede esattamente nel tuo caso, ma un h1 è un'intestazione, che non è un contenuto di frase e quindi non è consentito all'interno di un paragrafo. Considera il testo stampato: contiene intestazioni e paragrafi, ma le intestazioni non fanno parte dei paragrafi.
Oskar Berggren,

7

DIV è un contenitore a livello di blocco generico che può contenere qualsiasi altro blocco o elementi inline, inclusi altri elementi DIV, mentre P deve avvolgere i paragrafi (testo).


7

Potrebbe essere meglio vedere lo standard progettato da W3.org. Ecco l'indirizzo: http://www.w3.org/

Un tag "DIV" può avvolgere il tag "P", mentre un tag "P" non può avvolgere il tag "DIV", per ora conosco questa differenza. Potrebbero esserci altre differenze.


5

Pensa DIVcome un elemento di raggruppamento. Inserisci gli elementi in un elemento DIV in modo da poter impostare i loro allineamenti

Considerando che "p"è semplicemente creare un nuovo paragrafo.


3

<p> rappresenta un paragrafo e <div> rappresenta una 'divisione', suppongo che la differenza principale sia che i div sono semanticamente 'insignificanti', dove come <p> dovrebbe rappresentare qualcosa relativo al testo stesso.

Non avresti voluto annidare <p> s per esempio, dato che non avrebbe molto senso semantico (tranne nel senso delle citazioni) Considerando che le persone usano <div> s annidate per il layout di pagina.

Secondo Wikipedia

In HTML, gli elementi span e div sono utilizzati laddove parti di un documento non possono essere descritte semanticamente da altri elementi HTML.


2

Un ptag è per un paragrafo, generalmente utilizzato per il testo. Un divtag è per la divisione e generalmente utilizzato per creare sezioni di testo.


2

<p> è usato semanticamente per il testo, i paragrafi di solito.

<div>viene utilizzato per un blocco o un'area in una pagina Web. Ad esempio, potrebbe essere utilizzato per creare l'area di un'intestazione.

Probabilmente potrebbero essere usati in modo intercambiabile, ma non dovresti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.