Em qualquer HTML / XHTML válido, transitório ou estrito, você não pode aninhar um <p> dentro de outro <p>, para que <div> e <p> não sejam intercambiáveis.
Byran Zaugg
3
Byran - você abordou a questão essencial com essas respostas "semânticas". O problema é que o HTML restringe artificialmente <p> s para que eles se comportem de maneira diferente. Se eles fossem apenas elementos de bloco mais significado semântico, tudo bem. Mas por que impedi-lo de, por exemplo, incorporar uma ilustração em um parágrafo?
dkretz
2
@ 117700 você considerou alterar a resposta aceita?
Karl Richter
Tenha em mente <div></div>requer marcas abertas e encerramento, <p>não em circunstâncias específicas
Mark Schultheiss
Respostas:
-26
O código anterior foi
<pclass='item'><spanclass='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><spanclass='price'>$12.50</span></p>
Então eu tenho que mudar para
<divclass='item'><spanclass='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><spanclass='price'>$12.50</span></div>
Foi a solução fácil. E o CSS para o código acima é
Eu realmente não sei o que você quer dizer. “No site”: qual site? “... fazê-lo funcionar”: o que significa 'trabalho'? Qual é a renderização pretendida?
Marcel Korpel
4
Isso me parece completamente ilógico: os pelementos podem conter outros elementos em linha (a especificação do HTML 5 fala sobre elementos de fraseado (ver 7.3) ), um dos quais spané um deles, entre muitos outros. Além disso, essa não é uma resposta à pergunta do OP: não diz nada sobre a diferença entre pe div. E leia Como funcionam as respostas aos comentários?
Marcel Korpel
@MarcelKorpel Por que essa é a resposta aceita então? Sem disputar, apenas me perguntando por que há inconsistência.
precisa
3
@Anshul Aparentemente, algo funcionou para o OP, mas não responde à pergunta. Veja também a pontuação desta resposta: -16 no momento. Caso você não saiba: o OP é o único que pode aceitar uma resposta, enquanto todos na comunidade podem votar em uma resposta para cima ou para baixo.
Marcel Korpel
Tarde para a parte do ódio, mas: as <p>tags frequentemente contêm outros elementos, como <strong>ou <em>etc. O conteúdo de uma <p>tag deve ser o que o nome implica: um parágrafo de texto. Os parágrafos do texto geralmente contêm marcações adicionais. Não há nada nem remotamente incomum ou errado nisso.
Dave Newton
296
Eles têm diferença semântica - um <div>elemento é projetado para descrever um contêiner de dados, enquanto um <p>elemento é projetado para descrever um parágrafo de conteúdo.
A semântica faz toda a diferença. HTML é uma linguagem de marcação, o que significa que foi projetado para "marcar" o conteúdo de maneira significativa para o consumidor da marcação. A maioria dos desenvolvedores acredita que a semântica do documento são os estilos e a renderização padrão que os navegadores aplicam a esses elementos, mas esse não é o caso.
Os elementos que você escolhe para marcar seu conteúdo devem descrevê -lo. Não marque seu documento com base em sua aparência - marque-o com base no que é.
Se você precisar de um contêiner genérico puramente para fins de layoutentão use a <div>. Se você precisar de um elemento para descrever um parágrafo do conteúdo, use a <p>.
Nota: É importante entender que tanto <div>e <p>são elementos de bloco de nível que significa que a maioria dos navegadores irá tratá-los de forma semelhante.
Minha experiência foi que, se você deseja planejar um pedaço de conteúdo de maneira diferente de outro, esses dois são semanticamente distintos e, portanto, devem ser marcados independentemente de qualquer maneira . Se o OTOH, eles não são semanticamente distintos, provavelmente devem ser dispostos juntos. Em ambos os casos, não há necessidade de adicionar um elemento para fins de layout, porque no primeiro caso já deveria estar lá para começar e, no segundo caso, não há layout em andamento. Mas, novamente, eu sou um purista e meus sites sempre olhar como flashbacks a 1995.
Jörg W Mittag
5
Quando você diz para usar <p>como "parágrafo do conteúdo", o conteúdo precisa estar na forma de letras e palavras? Você usaria <p>para descrever outro tipo de conteúdo, como imagens?
Você esqueceu de mencionar que não pode aninhar p enquanto pode com div. Quanto ao tipo de atitude "não inclua informações de layout no html": não é possível escrever um arquivo html sem se preocupar com a aparência. Sua escolha da ordem e do aninhamento de div sempre terá influência - a menos que você escreva algum javascript que rasgue sua página e a reestruture. Portanto, ver div como "um contêiner genérico apenas para fins de layout " é a redação correta.
Masterxilo 28/05
E se eu preferir usar em divvez de p?
MELAB
66
Todas as boas respostas, mas há uma diferença que ainda não vi mencionada, e é assim que os navegadores as processam por padrão. Os principais navegadores renderizarão uma <p>tag com margem acima e abaixo do parágrafo. Uma <div>tag será renderizada sem nenhuma margem.
Se você deseja controlar a renderização, deve estar usando CSS. Não confie nos padrões atuais dos navegadores.
Caracol mecânico
15
A pergunta perguntou que diferenças existem entre os tags DIV e P. Isso é significativo para quem não usa uma redefinição de CSS, principalmente porque pode não ser óbvio para alguém que usa apenas um navegador.
ceejayoz
3
Obrigado pelo esclarecimento. Eu estava procurando por essa diferença exata, já que o uso da tag P estava fazendo com que o texto aparecesse com margem na parte superior (provavelmente na parte inferior), então estava me perguntando de onde vinha esse espaço. Precisava se livrar do espaço.
Whatsinaname
@ceejayoz margin? como podemos ver isso?
JAVA
57
<p> indica um parágrafo e tem significado semântico.
<div> é simplesmente um contêiner de bloco para outro conteúdo.
Tudo o que pode entrar em um <p>pode entrar em um, <div>mas o inverso não é verdadeiro. <div>as tags podem ter elementos em nível de bloco como filhos. <p>elementos não podem.
A única diferença entre os dois elementos é semântica. Ambos os elementos, por padrão, exibem a regra CSS: block (portanto, no nível do bloco) aplicado a eles; nada mais (exceto margem um pouco extra em alguns casos). No entanto, como mencionado acima, os dois diferem bastante em termos de semântica.
O <p>elemento, como o próprio nome indica, é para parágrafos. Portanto,<p> deve ser usado quando você deseja criar blocos de texto de parágrafo.
O <div>elemento, no entanto, tem pouco ou nenhum significado semanticamente e, portanto, pode ser usado como um elemento genérico em nível de bloco - geralmente, as pessoas o usam em layouts porque ele não faz sentido semanticamente e pode ser usado para geralmente qualquer coisa que você possa precisar. elemento de nível para.
Não há necessidade dessa última frase. Quase todas as perguntas neste site provavelmente poderiam ser pesquisadas, mas esse não é o ponto. O objetivo é criar um recurso para desenvolvedores com as mesmas perguntas no futuro.
nickf
sim, mas ele poderia ter iniciado uma discussão com algumas informações relevantes, de qualquer maneira irá editá-lo
Ashish Agarwal
1
Como p e div são elementos de bloco, por que quando um elemento h1 é aninhado dentro de uma div, ele herdará os estilos, mas quando aninhado em ap, não será? Obrigado
Return-1
@ Return-1 Eu não sei o que exatamente acontece no seu caso, mas um h1 é um cabeçalho, que não é um fraseado de conteúdo e, portanto, não é permitido em um parágrafo. Considere o texto impresso - ele contém cabeçalhos e parágrafos, mas os cabeçalhos não fazem parte dos parágrafos.
Oskar Berggren
7
DIV é um contêiner genérico em nível de bloco que pode conter outros elementos de bloco ou em linha, incluindo outros elementos DIV, enquanto P é agrupar parágrafos (texto).
Talvez seja melhor ver o padrão projetado pelo W3.org. Aqui está o endereço: http://www.w3.org/
Uma tag "DIV" pode quebrar a tag "P", enquanto que uma tag "P" não pode quebrar a tag "DIV" - até agora eu conheço essa diferença. Pode haver mais outras diferenças.
<p> representa um parágrafo e <div> representa uma 'divisão', suponho que a principal diferença é que divs são semanticamente 'sem sentido', onde como um <p> deve representar algo relacionado ao próprio texto.
Você não gostaria de aninhar <p> s por exemplo, pois isso não faria muito sentido semântico (exceto no sentido de citações). Enquanto as pessoas usam <div> s aninhados para o layout da página.
<div></div>
requer marcas abertas e encerramento,<p>
não em circunstâncias específicasRespostas:
O código anterior foi
Então eu tenho que mudar para
Foi a solução fácil. E o CSS para o código acima é
Portanto, a tag div pode conter outros elementos. P não deve ser forçado a fazer isso.
fonte
p
elementos podem conter outros elementos em linha (a especificação do HTML 5 fala sobre elementos de fraseado (ver 7.3) ), um dos quaisspan
é um deles, entre muitos outros. Além disso, essa não é uma resposta à pergunta do OP: não diz nada sobre a diferença entrep
ediv
. E leia Como funcionam as respostas aos comentários?<p>
tags frequentemente contêm outros elementos, como<strong>
ou<em>
etc. O conteúdo de uma<p>
tag deve ser o que o nome implica: um parágrafo de texto. Os parágrafos do texto geralmente contêm marcações adicionais. Não há nada nem remotamente incomum ou errado nisso.Eles têm diferença semântica - um
<div>
elemento é projetado para descrever um contêiner de dados, enquanto um<p>
elemento é projetado para descrever um parágrafo de conteúdo.A semântica faz toda a diferença. HTML é uma linguagem de marcação, o que significa que foi projetado para "marcar" o conteúdo de maneira significativa para o consumidor da marcação. A maioria dos desenvolvedores acredita que a semântica do documento são os estilos e a renderização padrão que os navegadores aplicam a esses elementos, mas esse não é o caso.
Os elementos que você escolhe para marcar seu conteúdo devem descrevê -lo. Não marque seu documento com base em sua aparência - marque-o com base no que é.
Se você precisar de um contêiner genérico
puramente para fins de layoutentão use a<div>
. Se você precisar de um elemento para descrever um parágrafo do conteúdo, use a<p>
.Nota: É importante entender que tanto
<div>
e<p>
são elementos de bloco de nível que significa que a maioria dos navegadores irá tratá-los de forma semelhante.fonte
<p>
como "parágrafo do conteúdo", o conteúdo precisa estar na forma de letras e palavras? Você usaria<p>
para descrever outro tipo de conteúdo, como imagens?div
vez dep
?Todas as boas respostas, mas há uma diferença que ainda não vi mencionada, e é assim que os navegadores as processam por padrão. Os principais navegadores renderizarão uma
<p>
tag com margem acima e abaixo do parágrafo. Uma<div>
tag será renderizada sem nenhuma margem.fonte
<p>
indica um parágrafo e tem significado semântico.<div>
é simplesmente um contêiner de bloco para outro conteúdo.Tudo o que pode entrar em um
<p>
pode entrar em um,<div>
mas o inverso não é verdadeiro.<div>
as tags podem ter elementos em nível de bloco como filhos.<p>
elementos não podem.Dê uma olhada no HTML DTD .
fonte
A única diferença entre os dois elementos é semântica. Ambos os elementos, por padrão, exibem a regra CSS: block (portanto, no nível do bloco) aplicado a eles; nada mais (exceto margem um pouco extra em alguns casos). No entanto, como mencionado acima, os dois diferem bastante em termos de semântica.
O
<p>
elemento, como o próprio nome indica, é para parágrafos. Portanto,<p>
deve ser usado quando você deseja criar blocos de texto de parágrafo.O
<div>
elemento, no entanto, tem pouco ou nenhum significado semanticamente e, portanto, pode ser usado como um elemento genérico em nível de bloco - geralmente, as pessoas o usam em layouts porque ele não faz sentido semanticamente e pode ser usado para geralmente qualquer coisa que você possa precisar. elemento de nível para.Link para mais detalhes
fonte
DIV é um contêiner genérico em nível de bloco que pode conter outros elementos de bloco ou em linha, incluindo outros elementos DIV, enquanto P é agrupar parágrafos (texto).
fonte
Talvez seja melhor ver o padrão projetado pelo W3.org. Aqui está o endereço: http://www.w3.org/
Uma tag "DIV" pode quebrar a tag "P", enquanto que uma tag "P" não pode quebrar a tag "DIV" - até agora eu conheço essa diferença. Pode haver mais outras diferenças.
fonte
Pense
DIV
como um elemento de agrupamento. Você coloca elementos em um elemento DIV para poder definir seus alinhamentosConsiderando que
"p"
é simplesmente criar um novo parágrafo.fonte
<p> representa um parágrafo e <div> representa uma 'divisão', suponho que a principal diferença é que divs são semanticamente 'sem sentido', onde como um <p> deve representar algo relacionado ao próprio texto.
Você não gostaria de aninhar <p> s por exemplo, pois isso não faria muito sentido semântico (exceto no sentido de citações). Enquanto as pessoas usam <div> s aninhados para o layout da página.
De acordo com a Wikipedia
fonte
Uma
p
tag é para um parágrafo, geralmente usada para texto. Umadiv
tag é para divisão e geralmente usada para criar seções de texto.fonte
<p>
é usado semanticamente para texto, parágrafos geralmente.<div>
é usado para um bloco ou área em uma página da web. Por exemplo, poderia ser usado para criar a área de um cabeçalho.Eles provavelmente poderiam ser usados de forma intercambiável, mas você não deveria.
fonte