Respuestas:
De acuerdo con los estándares web, no está permitido colocar elementos de bloque en elementos en línea.
Como h1
es un elemento de bloque y a
es un elemento en línea, la forma correcta es:
<h1><a href="#">This is a title</a></h1>
Aquí hay un enlace para que pueda obtener más información: w3 Modelo de formato visual
Sin embargo, hay una excepción de que en HTML5 es válido envolver elementos a nivel de bloque (como div
, p
o h*
) en etiquetas de anclaje. El envolver elementos a nivel de bloque en elementos en línea que no sean anclajes todavía va en contra de los estándares.
HTML5 actualiza este tema: ahora está bien envolver los elementos de nivel de bloque con A, como se indica en otra pregunta: https://stackoverflow.com/a/9782054/674965 y aquí: http://davidwalsh.name/html5- elementos-enlaces
Por lo que entiendo, HTML5 le permite envolver elementos de nivel de bloque en etiquetas de enlace. Sin embargo, pueden aparecer errores en los navegadores más antiguos. Encontré esto con Firefox 3.6.18 y obtuve moz-rs-header = "" insertado en mi código. Así se rompieron mis estilos. Si le interesa una solución alternativa, puede envolver las etiquetas de enlace en divs. A continuación se proporciona una mejor explicación de por qué funciona el código adicional http://oli.jp/2009/html5-block-level-links/