web-dev-qa-db-fra.com

comment mélanger les liens (<a> balise) et les titres (<h1> balise) dans la norme Web?

Quel est le bon code pour créer un lien avec l'en-tête 1 selon les standards du web?

est-ce

<h1><a href="http://stackoverflow.com"> stackoverflow </a></h1>

ou

<a href="http://stackoverflow.com"><h1> stackoverflow </h1></a>

Merci

91
ahmed

Selon les normes Web, vous n'êtes pas autorisé à mettre des éléments de bloc dans des éléments en ligne.

Comme h1 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 Visual formating model

Cependant, il existe une exception: en HTML5, il est valide pour encapsuler les éléments de niveau bloc (comme div, p ou h*) dans les balises d'ancrage. Envelopper des éléments de niveau bloc dans des éléments en ligne autres que des ancres va toujours à l'encontre des normes.

137
Darko Z

HTML5 met à jour ce sujet: il est maintenant possible d'envelopper 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-elements-links

44
f055

Pour 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. C'est ainsi que mes styles ont éclaté. Si vous vous souciez d'une solution, vous pouvez ensuite encapsuler les balises de lien dans les divs. Ce qui suit explique mieux pourquoi le code supplémentaire fonctionne http://oli.jp/2009/html5-block-level-links/

2
Kip Deeds