将链接<a>围绕<div>
是否有可能像这样包装<div>
的<a>
标签:
<a href=etc etc> <div class="layout"> <div class="title"> Video Type <div class="description">Video description</div> </div> </div> </a>
Eclipse是告诉我这个div在错误的地方? 如果这是不允许的。 我怎样才能使整个“布局”类成为一个链接?
该结构在HTML5中是有效的,因为在HTML5中,锚可以包装几乎除了其他锚和表单控件以外的任何元素。 现在大多数浏览器都支持这个function,并将parsing问题中的代码作为有效的HTML。 下面的答案是在2011年编写的,如果您支持传统浏览器(*咳嗽* Internet Explorer *咳嗽*)可能会有用。
没有HTML5parsing器的旧浏览器(比如Firefox 3.6)仍然会对此感到困惑,并且可能会弄乱DOM结构。
HTML4的三个选项 – 使用所有内联元素:
<a href=etc etc> <span class="layout"> <span class="title"> Video Type <span class="description">Video description</span> </span> </span> </a>
然后display: block
样式
使用JavaScript和:hover
:
<div class="layout"> <div class="title"> Video Type <div class="description">Video description</div> </div> </div>
和(假设jQuery)
$('.layout').click(function(){ // Do something }):
和
.layout:hover { // Hover effect }
或者最后使用绝对定位来放置一个带有CSS a
锚点来覆盖整个.layout
<div class="layout"> <div class="title"> Video Type <div class="description">Video description</div> </div> <a class="more_link" href="somewhere">More information</a> </div>
和CSS:
.layout { position: relative; } .layout .more_link { position: absolute; display: block; top: 0; bottom: 0; left: 0; right: 0; text-indent: -9999px; z-index: 1000; }
当然,这不适用于旧版本的IE。
虽然<a>
标签不允许包含<div>
元素,但允许包含其他内联元素(如<span>
。
当我遇到问题时,我用<span>
交换了div标签。 由于span标记是一个内联元素,因此需要将display:block
应用于<span>
元素的css,以使其行为与<div>
块元素相似。 这应该是有效的XHTML,并不需要任何JavaScript。
这是一个例子:
<a href="#"> <span style="display:block"> Some content. Maybe some other span elements, or images. </span> </a>
Timothy的解决scheme是正确的… …而不是包装在一个div周围的锚…你只需要给显示:块的锚元素布局,并添加锚的大小和宽度…
.div_class { width: 100px; height: 100px; } .div_class a { width: 100px; height: 100px; display: block; } <div class='div_class'><a href="#"></a></div>
另一个简单的解决scheme – 只需添加一个onclick事件处理程序到div:
<div class="layout" onclick="location.href='somewhere'"> <div class="title"> Video Type <div class="description">Video description</div> </div> </div>
这对我很好,但有一个小问题。 我不确定search引擎是如何友好的。 我担心谷歌的networking爬虫可能不会find这个链接,所以我也倾向于在这个块的某个地方包含一个传统的HREF链接:
<div class="layout" onclick="location.href='destination_url'"> <div class="title"> Video Type <div class="description">Video description</div> </div> <a href="destination_url">This is a link</a> </div>
您只需要将“a”标签设置为display: block;
Eclipse正确地告诉你,你的HTML不是规范的(因为锚标签中不允许使用div标签)。
但是,因为你似乎想要在视觉上使锚点看起来像一个大木盒子,所以简单的样式:)