将链接<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标签)。

但是,因为你似乎想要在视觉上使锚点看起来像一个大木盒子,所以简单的样式:)