Reputation: 14666
What is the correct code to create a link with heading 1 according to web standards?
is it
<h1><a href="http://stackoverflow.com"> stackoverflow </a></h1>
or
<a href="http://stackoverflow.com"><h1> stackoverflow </h1></a>
Thanks
Upvotes: 106
Views: 74736
Reputation: 399
a > h1
will cause difficulty in selecting text
Since both are completely valid in HTML5, it is better to use h1 > a
Upvotes: 8
Reputation: 38860
According to web standards you aren't allowed to put block elements into inline elements.
As h1
is a block element and a
is an inline element the correct way is:
<h1><a href="#">This is a title</a></h1>
Here is a link so you can learn more: w3 Visual formatting model
However, there is an exception that in HTML5 it is valid to wrap block-level elements (like div
, p
or h*
) in anchor tags. Wrapping block-level elements in inline elements other than anchors still goes against the standards.
Upvotes: 161
Reputation: 53
As far as I understand HTML5 does allow you to wrap block level elements in link tags. However, bugs may show up in older browsers. I encountered this with Firefox 3.6.18 and got moz-rs-heading="" inserted into my code. Thus my styles broke. If you care about a work around, you can then wrap the link tags in divs. The following provides a better explanation of why the additional code works http://oli.jp/2009/html5-block-level-links/
Upvotes: 2
Reputation: 1190
HTML5 updates this subject: it is now OK to wrap block-level elements with A's, as stated under another question: https://stackoverflow.com/a/9782054/674965 and here: http://davidwalsh.name/html5-elements-links
Upvotes: 51