我有许多网站有很多链接,其中锚标签在标题标签内,例如:
<a href="#">
<h2 style="padding-left: 50px;">
A hyperlinked heading
</h2>
</a>
这允许我单击h2元素中的任何位置,包括h2元素(!)上的任何填充,并触发超链接。但是,它不符合W3C (用http://validator.w3.org/检查)
为了与W3C兼容,我不能在内联标记(即a)中包含任何块标记(即h2)。因此,修复方法是将锚标记放置在标题标记中:
<h2 style="padding-left: 50px;">
<a href="#">
A hyperlinked heading
</a>
</h2>
该解决方案的问题是,我现在只能通过单击text在h2中触发超链接,但实际上我希望能够单击h2元素上的anywhere。
我发现可以将display:block添加到锚标记中,如下所示:
<h2 style="padding-left: 50px;">
<a href="#" style="display: block;">
A hyperlinked heading
</a>
</h2>
这在一定程度上克服了这个问题,因为它允许我单击大多数h2元素来触发超链接,但仍然不允许我通过单击h2的任何填充区域来触发超链接。
突出显示问题的JSFiddle可以在这里找到:http://jsfiddle.net/84rDG/
有人建议我可以从h2元素中删除所有CSS并将其添加到h2类中,然后我可以将h2类应用于任何需要h2标记外观的h2标记和。不过,这并不是什么好事,因为我必须用锚标记替换我的大部分h2标记,这会破坏任何基于h2元素的搜索引擎优化。
似乎HTML5将允许锚标记环绕标题标记,这可能是因为很多人都在试图实现我在这里概述的目标,但我需要一个在此期间有效的解决方案。
任何建议都欢迎!
发布于 2012-04-18 06:18:50
应该从h2
-element中移除填充,并将其添加到a
-element中。
CSS:
h2.anchor {
border: 1px solid red;
font-size: 40px;
padding: 0px;
}
h2 > a {
display: block;
padding-left: 50px;
}
HTML:
<h2 class="anchor">
<a href="#">
A hyperlinked heading
</a>
</h2>
https://stackoverflow.com/questions/10211163
复制相似问题