Réponses:
Selon les normes Web, vous n'êtes pas autorisé à placer des éléments de bloc dans des éléments en ligne.
Comme h1
c'est un élément de bloc et a
est un élément en ligne, la manière correcte est:
<h1><a href="#">This is a title</a></h1>
Voici un lien pour en savoir plus: w3 Modèle de formatage visuel
Cependant, il existe une exception selon laquelle en HTML5, il est valide d'encapsuler des éléments de niveau bloc (comme div
, p
ou h*
) dans des balises d'ancrage. L'emballage d'éléments de niveau bloc dans des éléments en ligne autres que des ancres va toujours à l'encontre des normes.
HTML5 met à jour ce sujet: il est maintenant possible d'encapsuler les éléments de niveau bloc avec des A, comme indiqué sous une autre question: https://stackoverflow.com/a/9782054/674965 et ici: http://davidwalsh.name/html5- éléments-liens
Autant que je sache, HTML5 vous permet d'encapsuler des éléments de niveau bloc dans des balises de lien. Cependant, des bogues peuvent apparaître dans les anciens navigateurs. J'ai rencontré cela avec Firefox 3.6.18 et j'ai inséré moz-rs-header = "" dans mon code. Ainsi mes styles se sont cassés. Si vous vous souciez d'une solution, vous pouvez ensuite envelopper les balises de lien dans des divs. Ce qui suit fournit une meilleure explication de la raison pour laquelle le code supplémentaire fonctionne http://oli.jp/2009/html5-block-level-links/