html - validar - w3c validator css
No hay elemento p en el alcance, sino validaciĆ³n de la etiqueta ap end seen.w3c (3)
Mi HTML es como a continuación. He abierto todos los elementos y los cerré. Aún cuando lo reviso en w3c muestra un error. No puedo resolverlo.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p>
<div class="inr_content clearfix">
<div class="col2 first fl">
to provide a drive-in services.
</div>
<div class="col2 last fr">
to provide a drive-in services.
</div>
</div>
</p>
</body>
</html>
Como la sintaxis del elemento p
no permite un elemento secundario div
, y la etiqueta final </p>
puede omitirse, el validador (y un navegador) implica </p>
cuando encuentra una etiqueta <div>
al analizar un elemento p
elemento. Es decir, cuando p
se analiza (o "está abierto"), la etiqueta de inicio de un elemento div
cierra implícitamente, como si el marcado tuviera:
<body>
<p>
</p><div class="inr_content clearfix">
<div class="col2 first fl">
Esto significa que hay un elemento p
con solo espacios en blanco. La etiqueta </p>
que aparece más tarde no tiene ninguna etiqueta de inicio coincidente, y se informa que no es válida. Los navegadores ignoran esas etiquetas finales sin hogar, pero los validadores tienen que informarlas.
El cambio mínimo es eliminar la etiqueta </p>
. Si esto es adecuado depende de lo que quieras. Quitar la etiqueta <p>
también eliminaría el elemento p
, y esto afectaría la representación. Aunque el elemento p
no tiene contenido procesado (la altura del contenido es 0), tiene un margen superior e inferior predeterminado, lo que permite crear un espacio vertical vacío.
Si no desea ese espacio, simplemente elimine la etiqueta <p>
(junto con </p>
por supuesto). Si quiere algo de espacio, por lo general, es mejor eliminar la etiqueta, pero también debería establecer, en CSS, algún valor adecuado de margin-top
en el elemento div
nivel superior.
Aunque los elementos p
que contienen solo espacios en blanco están permitidos en HTML5, no se recomiendan. Esto es parte de la recomendación general relacionada con el llamado contenido palpable : "los elementos cuyo modelo de contenido permite cualquier contenido de flujo o contenido de fraseo deben tener al menos un nodo en sus contenidos que sea contenido palpable". Y el texto suele ser contenido palpable, pero no si se trata solo de espacios en blanco.
Esto se debe a que está anidando un elemento de nivel de bloque dentro de la etiqueta p
que no es válido. Solo puede anidar elementos en línea como span
, a
e img
dentro de la etiqueta p
. Entonces su marcado no es válido, considere hacer algo como
<div class="inr_content clearfix">
<div class="col2 first fl">
<p>to provide a drive-in services.</p>
</div>
<div class="col2 last fr">
<p>to provide a drive-in services.</p>
</div>
</div>
De W3C [1] :
El elemento P representa un párrafo. No puede contener elementos de nivel de bloque (incluido P mismo).
1 - Reference
No se puede poner semánticamente un div dentro de una etiqueta <p>
.