¿Debería ol/ul estar dentro o fuera de <p>?
¿Cuál cumple con el estándar entre estos dos?
<p>Text text text ...
<ol>
<li>First element</li>
</ol>
</p>
<p>
Other text text ...
</p>
O
<p>
Text text text ...
</p>
<ol>
<li>First element</li>
</ol>
<p>
Other text text ...
</p>
La respuesta corta es que ol
los elementos no están permitidos legalmente dentro de p
los elementos.
Para ver por qué, ¡vamos a las especificaciones ! Si se siente cómodo con la especificación HTML, responderá muchas de sus preguntas y curiosidades. Quieres saber si un ol
puede vivir dentro de un p
. Entonces…
4.5.1 El
p
elemento :Categorías: Contenido fluido , Contenido palpable .
Modelo de contenido: contenido de fraseo .
4.5.5 El
ol
elemento :Categorías: Contenido fluido .
Modelo de contenido : Cero o más li y elementos de soporte de scripts .
La primera parte dice que p
los elementos solo pueden contener contenido de fraseo (que son elementos "en línea" como span
y strong
).
La segunda parte dice que ol
los s son contenido fluido (elementos de "bloque" como p
y div
). Por lo tanto, no se pueden usar dentro de un archivo p
.
ol
s y other flow content
se pueden usar en algunos otros elementos como div
:
4.5.13 El
div
elemento :Categorías: Contenido fluido , Contenido palpable .
Modelo de contenido: contenido fluido .
El segundo. El primero no es válido.
- Un párrafo no puede contener una lista.
- Una lista no puede contener un párrafo a menos que ese párrafo esté contenido en su totalidad dentro de un único elemento de la lista.
Un navegador lo manejará así:
<p>tetxtextextete
<!-- Start of paragraph -->
<ol>
<!-- Start of ordered list. Paragraphs cannot contain lists. Insert </p> -->
<li>first element</li></ol>
<!-- A list item element. End of list -->
</p>
<!-- End of paragraph, but not inside paragraph, discard this tag to recover from the error -->
<p>other textetxet</p>
<!-- Another paragraph -->