En cualquier HTML / XHTML válido, de transición o estricto, no puede anidar un <p> dentro de otro <p>, por lo que <div> y <p> no son intercambiables.
Byran Zaugg
3
Byran: has tocado el tema esencial con estas respuestas "semánticas". El problema es que HTML restringe artificialmente <p> s para que se comporten de manera diferente. Si solo fueran elementos de bloque más significado semántico, estaría bien. Pero, ¿por qué evitar, por ejemplo, incrustar una ilustración en un párrafo?
dkretz
2
@ 117700 ¿ha considerado cambiar la respuesta aceptada?
Karl Richter
Tenga en cuenta que <div></div>requiere etiquetas abiertas y de cierre, <p>no en circunstancias específicas
Mark Schultheiss
Respuestas:
-26
El código anterior era
<pclass='item'><spanclass='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><spanclass='price'>$12.50</span></p>
Entonces tengo que cambiarlo a
<divclass='item'><spanclass='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><spanclass='price'>$12.50</span></div>
Fue la solución fácil. Y el CSS para el código anterior es
Realmente no sé a qué te refieres. "En el sitio": ¿qué sitio? "... para que funcione": ¿qué significa 'trabajo'? ¿Cuál es la representación prevista?
Marcel Korpel
44
Esto me parece completamente ilógico: los pelementos pueden contener otros elementos en línea (la especificación HTML 5 habla de elementos de fraseo (ver 7.3) ), de los cuales spanes uno de ellos, entre muchos otros. Además, esta no es una respuesta a la pregunta del OP: no dice nada sobre la diferencia entre py div. Y por favor lea ¿Cómo funcionan las respuestas de comentarios?
Marcel Korpel
@MarcelKorpel ¿Por qué es esta la respuesta aceptada entonces? No discutiendo, solo preguntándome por qué hay inconsistencia.
Anshul
3
@Anshul Aparentemente, algo funcionó para el OP, pero no responde la pregunta. También mire el puntaje de esta respuesta: -16 en este momento. En caso de que no lo sepa: el OP es el único que puede aceptar una respuesta, mientras que todos en la comunidad pueden votar una respuesta hacia arriba o hacia abajo.
Marcel Korpel
Tarde a la fiesta de odio, pero: las <p>etiquetas a menudo contienen otros elementos, como <strong>o <em>etc. El contenido de una <p>etiqueta debe ser lo que su nombre implica: un párrafo de texto. Los párrafos de texto a menudo contienen marcas adicionales. No hay nada remotamente inusual o incorrecto con eso.
Dave Newton el
298
Tienen una diferencia semántica : un <div>elemento está diseñado para describir un contenedor de datos, mientras que un <p>elemento está diseñado para describir un párrafo de contenido.
La semántica hace toda la diferencia. HTML es un lenguaje de marcado que significa que está diseñado para "marcar" el contenido de una manera que sea significativa para el consumidor del marcado. La mayoría de los desarrolladores creen que la semántica del documento son los estilos predeterminados y la representación que los navegadores aplican a estos elementos, pero ese no es el caso.
Los elementos que elija para marcar su contenido deben describir el contenido. No marque su documento en función de cómo debería verse, márquelo en función de lo que es.
Si necesitas un contenedor genérico puramente para propósitos de diseñoluego use a <div>. Si necesita un elemento para describir un párrafo de contenido, utilice a <p>.
Nota: Es importante entender que tanto <div>y <p>son elementos de bloque de nivel lo que significa que la mayoría de los navegadores tratarlos de una forma similar.
Mi experiencia ha sido que si desea diseñar una pieza de contenido de manera diferente a otra pieza de contenido, esos dos son semánticamente distintos y, por lo tanto, deben marcarse de forma independiente de todos modos . Si OTOH, no son semánticamente distintos, entonces probablemente deberían distribuirse juntos. En cualquier caso, no es necesario agregar un elemento para propósitos de diseño, porque en el primer caso ya debería haber estado allí para comenzar y en el segundo caso no hay ningún diseño en curso. Pero, de nuevo, soy purista y mis sitios siempre parecen recuerdos de 1995.
Jörg W Mittag
55
Cuando dice usar <p>para "párrafo de contenido", ¿el contenido tiene que ser en forma de letras y palabras? ¿Alguna vez usarías <p>para describir algún otro tipo de contenido, como imágenes?
Olvidó mencionar que no puede anidar p mientras que puede con div. En cuanto al tipo de actitudes "no incluir información de diseño en el html": no es posible escribir un archivo html sin preocuparse de cómo debería verse. La elección del orden y el anidamiento de los div siempre influirá, a menos que escriba un JavaScript que desgarre su página y la reestructura. Por lo tanto, ver div como "un contenedor genérico puramente para propósitos de diseño " es la redacción correcta.
masterxilo
¿Qué pasa si prefiero usar en divlugar de p?
Melab
66
Todas son buenas respuestas, pero hay una diferencia que no he visto mencionada todavía, y así es como los navegadores las muestran por defecto. Los principales navegadores web mostrarán una <p>etiqueta con margen arriba y debajo del párrafo. Se <div>generará una etiqueta sin margen alguno.
Si desea controlar el renderizado, debe usar CSS. No confíe en los valores predeterminados actuales de los navegadores.
Caracol mecánico
15
La pregunta preguntó qué diferencias hay entre las etiquetas DIV y P. Esto es significativo para cualquiera que no use un restablecimiento CSS, especialmente porque puede no ser obvio para alguien que usa solo un navegador.
ceejayoz
3
Gracias por la aclaración. Estaba buscando esta diferencia exacta ya que el uso de la etiqueta P hacía que el texto apareciera con un margen en la parte superior (y probablemente en la parte inferior probablemente), por lo que me preguntaba de dónde viene ese espacio. Necesario para deshacerse del espacio.
WhatsInAName
@ceejayoz margen? ¿Cómo podemos ver eso?
JAVA
58
<p> indica un párrafo y tiene un significado semántico.
<div> es simplemente un contenedor de bloques para otro contenido.
Todo lo que puede ir en un <p>puede ir en un <div>pero lo contrario no es cierto. <div>Las etiquetas pueden tener elementos de nivel de bloque como elementos secundarios. <p>los elementos no pueden
La única diferencia entre los dos elementos es la semántica. Ambos elementos, por defecto, tienen la visualización de la regla CSS: bloque (por lo tanto, nivel de bloque) aplicado a ellos; nada más (excepto un margen algo extra en algunos casos). Sin embargo, como se mencionó anteriormente, ambos difieren mucho en términos de semántica.
El <p>elemento, como su nombre lo indica, es para párrafos. Por lo tanto, <p>debe usarse cuando desee crear bloques de texto de párrafo.
El <div>elemento, sin embargo, tiene poco o ningún significado semántico y por lo tanto puede ser utilizado como un elemento genérico a nivel de bloque - con mayor frecuencia, las personas lo utilizan dentro de los diseños, ya que no tiene sentido semántico y se puede utilizar para cualquier cosa que por lo general requieren un bloque- elemento de nivel para.
No hay necesidad de esa última oración. Casi todas las preguntas en este sitio probablemente podrían buscarse en Google, pero ese no es el punto. El punto es hacer un recurso para desarrolladores con las mismas preguntas en el futuro.
nickf
sí, pero podría haber comenzado una discusión con información relevante, de cualquier manera la editará
Ashish Agarwal
1
Dado que p y div son elementos de bloque, ¿por qué cuando un elemento h1 está anidado dentro de un div, heredará los estilos, pero cuando está anidado en ap no lo hará? Gracias
Regreso-1
@ Return-1 No sé qué sucede exactamente en su caso, pero un h1 es un encabezado, que no está redactando contenido y, por lo tanto, no está permitido dentro de un párrafo. Considere el texto impreso: contiene encabezados y párrafos, pero los encabezados no son parte de los párrafos.
Oskar Berggren
7
DIV es un contenedor de nivel de bloque genérico que puede contener cualquier otro bloque o elementos en línea, incluidos otros elementos DIV, mientras que P es para ajustar párrafos (texto).
Sería mejor ver el estándar diseñado por W3.org. Aquí está la dirección: http://www.w3.org/
Una etiqueta "DIV" puede envolver la etiqueta "P" mientras que una etiqueta "P" no puede envolver la etiqueta "DIV", hasta ahora sé esta diferencia. Puede haber más otras diferencias.
<p> representa un párrafo y <div> representa una 'división', supongo que la diferencia principal es que los divs son semánticamente 'sin sentido', donde se supone que un <p> representa algo relacionado con el texto mismo.
No querrías tener <p> s anidados, por ejemplo, ya que eso no tendría mucho sentido semántico (excepto en el sentido de las citas) Mientras que las personas usan <div> s anidados para el diseño de página.
Una petiqueta es para un párrafo, generalmente usado para texto. Una divetiqueta es para división, y generalmente se usa para crear secciones de texto.
<div></div>
requiere etiquetas abiertas y de cierre,<p>
no en circunstancias específicasRespuestas:
El código anterior era
Entonces tengo que cambiarlo a
Fue la solución fácil. Y el CSS para el código anterior es
Entonces, la etiqueta div puede contener otros elementos. P no debería ser forzado a hacer eso.
fuente
p
elementos pueden contener otros elementos en línea (la especificación HTML 5 habla de elementos de fraseo (ver 7.3) ), de los cualesspan
es uno de ellos, entre muchos otros. Además, esta no es una respuesta a la pregunta del OP: no dice nada sobre la diferencia entrep
ydiv
. Y por favor lea ¿Cómo funcionan las respuestas de comentarios?<p>
etiquetas a menudo contienen otros elementos, como<strong>
o<em>
etc. El contenido de una<p>
etiqueta debe ser lo que su nombre implica: un párrafo de texto. Los párrafos de texto a menudo contienen marcas adicionales. No hay nada remotamente inusual o incorrecto con eso.Tienen una diferencia semántica : un
<div>
elemento está diseñado para describir un contenedor de datos, mientras que un<p>
elemento está diseñado para describir un párrafo de contenido.La semántica hace toda la diferencia. HTML es un lenguaje de marcado que significa que está diseñado para "marcar" el contenido de una manera que sea significativa para el consumidor del marcado. La mayoría de los desarrolladores creen que la semántica del documento son los estilos predeterminados y la representación que los navegadores aplican a estos elementos, pero ese no es el caso.
Los elementos que elija para marcar su contenido deben describir el contenido. No marque su documento en función de cómo debería verse, márquelo en función de lo que es.
Si necesitas un contenedor genérico
puramente para propósitos de diseñoluego use a<div>
. Si necesita un elemento para describir un párrafo de contenido, utilice a<p>
.Nota: Es importante entender que tanto
<div>
y<p>
son elementos de bloque de nivel lo que significa que la mayoría de los navegadores tratarlos de una forma similar.fuente
<p>
para "párrafo de contenido", ¿el contenido tiene que ser en forma de letras y palabras? ¿Alguna vez usarías<p>
para describir algún otro tipo de contenido, como imágenes?div
lugar dep
?Todas son buenas respuestas, pero hay una diferencia que no he visto mencionada todavía, y así es como los navegadores las muestran por defecto. Los principales navegadores web mostrarán una
<p>
etiqueta con margen arriba y debajo del párrafo. Se<div>
generará una etiqueta sin margen alguno.fuente
<p>
indica un párrafo y tiene un significado semántico.<div>
es simplemente un contenedor de bloques para otro contenido.Todo lo que puede ir en un
<p>
puede ir en un<div>
pero lo contrario no es cierto.<div>
Las etiquetas pueden tener elementos de nivel de bloque como elementos secundarios.<p>
los elementos no puedenEcha un vistazo a la DTD HTML .
fuente
La única diferencia entre los dos elementos es la semántica. Ambos elementos, por defecto, tienen la visualización de la regla CSS: bloque (por lo tanto, nivel de bloque) aplicado a ellos; nada más (excepto un margen algo extra en algunos casos). Sin embargo, como se mencionó anteriormente, ambos difieren mucho en términos de semántica.
El
<p>
elemento, como su nombre lo indica, es para párrafos. Por lo tanto,<p>
debe usarse cuando desee crear bloques de texto de párrafo.El
<div>
elemento, sin embargo, tiene poco o ningún significado semántico y por lo tanto puede ser utilizado como un elemento genérico a nivel de bloque - con mayor frecuencia, las personas lo utilizan dentro de los diseños, ya que no tiene sentido semántico y se puede utilizar para cualquier cosa que por lo general requieren un bloque- elemento de nivel para.Enlace para más detalles
fuente
DIV es un contenedor de nivel de bloque genérico que puede contener cualquier otro bloque o elementos en línea, incluidos otros elementos DIV, mientras que P es para ajustar párrafos (texto).
fuente
Sería mejor ver el estándar diseñado por W3.org. Aquí está la dirección: http://www.w3.org/
Una etiqueta "DIV" puede envolver la etiqueta "P" mientras que una etiqueta "P" no puede envolver la etiqueta "DIV", hasta ahora sé esta diferencia. Puede haber más otras diferencias.
fuente
Piense
DIV
como un elemento de agrupación. Pones elementos en un elemento DIV para que puedas establecer sus alineacionesMientras que
"p"
es simplemente crear un nuevo párrafo.fuente
<p> representa un párrafo y <div> representa una 'división', supongo que la diferencia principal es que los divs son semánticamente 'sin sentido', donde se supone que un <p> representa algo relacionado con el texto mismo.
No querrías tener <p> s anidados, por ejemplo, ya que eso no tendría mucho sentido semántico (excepto en el sentido de las citas) Mientras que las personas usan <div> s anidados para el diseño de página.
De acuerdo con Wikipedia
fuente
Una
p
etiqueta es para un párrafo, generalmente usado para texto. Unadiv
etiqueta es para división, y generalmente se usa para crear secciones de texto.fuente
<p>
se usa semánticamente para texto, párrafos usualmente.<div>
se usa para un bloque o área en una página web. Por ejemplo, podría usarse para hacer el área de un encabezado.Se podría probablemente ser utilizados indistintamente, pero que no debería.
fuente