2011-03-17 9 views

Respuesta

20
<h1><a>Header</a></h1> 

<h1> es un bloque- elemento de nivel y <a> no es, es HTML sintácticamente no válido tener elementos de nivel de bloque dentro de elementos en línea (al menos hasta HTML5), que es lo contrario.

+7

Cualquiera que lea esto en el tiempo de comentario que debería saber que, o bien es aceptable en HTML5. Fuente: http://webmasters.stackexchange.com/questions/20446/anchor-tag-inside-h1-or-h1-inside-achor-tag-which-better – Jared

1

yo diría que , porque <h*> son elementos de bloque y es <a> elemento en línea, por lo que parece más natural para mantener el elemento en línea dentro de un bloque div, no al revés.

1

La cabecera debe ser el primero en mi opinión pero dudo que los motores de búsqueda que realmente importa qué forma redonda que son, dentro del H1 sólo parece más limpio que me ...

1

Dado que h1 no se corresponde directamente con un objeto visible, ambos son correctos.

3

Desde una perspectiva semántica: ambos (o ninguno).

(Desde una perspectiva estructural, otoh, antes de HTML 5 un ancla no puede comprenderán un encabezamiento, y dado que los navegadores no son todo el HTML 5 capaces todavía se debe evitar la nueva forma de la construcción cuando sea posible)

Si está creando un destino de enlace, de todos modos se prefiere <h1 id="target_name"> a <h1><a name="target_name">.

Si está creando un hipervínculo, tener el encabezado más importante en el enlace de la página en otro lugar es algo dudoso desde el punto de vista semántico.

+0

"ya que los navegadores no son todos capaces de HTML 5 sin embargo, debe evitar la nueva forma del constructo siempre que sea posible "- ¿no es esta una de esas áreas como el doctype donde la especificación HTML5 ha codificado el comportamiento existente del navegador, lo que significa que puede utilizar este constructo alegremente donde quiera? –

+0

He visto navegadores que se rompen en elementos de bloque dentro de los anclajes. No he hecho una verificación exhaustiva para ver a qué se debe esto. – Quentin

9

Esta respuesta en una pregunta duplicado es mejor que la mía: https://stackoverflow.com/a/7023551/20578

Pero, para la posteridad:


punto de vista semántico, no hay diferencia. Recuerde, "semántica" solo significa "relacionado con el significado", y el significado es algo acordado entre los humanos (porque las computadoras no tienen significado nativo, eso es algo del cerebro humano). Nadie tiene tiempo para aceptar que una de estas opciones virtualmente idénticas significa algo diferente a la otra :)

Sorprendentemente, en realidad ambos son también válidos, a partir de la especificación HTML actual, porque el modelo de contenido <a> se define como "transparent", es decir, el mismo que su elemento primario.

Ver:

Y:

(que asume que los padres <a> ‘s puede tener un <h1> como su hijo)

Sin embargo, no es válido en virtud de las versiones anteriores de HTML:

Cuestiones relacionadas