2011-10-12 144 views
2

我在下面的例子外一个div像一个链接:链接包括空的空间

<a href="http://google.com"> 
    <div id="Something" style="width:200px; height:100px; display:block; background-color:red; padding:0; margin:0;"> 
    </div> 
</a> 

现在,链接不上格的任何部分的工作,但它也存在外div,主要在它没有任何东西的右侧。我如何解决这个问题,使链接只能在div标签内工作?

下面是的jsfiddle代码:http://jsfiddle.net/BWPHS/

+0

这不是一个有效的方法。在DIV中制作'A'标签'display:block' *。 –

+0

@JaredFarrish根据文档类型的不同,我认为[围绕块级元素包装''实际上是有效的](http://html5doctor.com/block-level-links-in-html-5/)。 – sdleihssirhc

+0

@sdleihssirhc - 好吧,HTML5确实允许(不知道)。各种好吃的东西! –

回答

3

注意,DIV元素display: block默认情况下,所以你并不需要,在DIV。你需要做的是使A高度相同,并解决填充和边缘的味道。

<div id="Something" style="width:200px; height:100px; background-color:red; padding:0; margin:0;"> 
    <a href="http://google.com" style="height: 100px; display:block; padding: 0; margin: 0;"></a> 
</div> 

http://jsfiddle.net/BWPHS/3/

注意,如sdleihssirc笔记,HTML5不会允许它(如果使用DOCTYPE)。请注意,以解决对HTML5的具体问题,你就需要在高度和宽度适用于A标签:

<a href="http://google.com" style="width: 200px; height: 100px; display:block; padding: 0; margin: 0; background: blue;"> 
    <div id="Something" style="height: 100px; background-color: red; padding:0; margin:0;"></div> 
</a> 

http://jsfiddle.net/BWPHS/2/

而且,作为thirtydot指出,可以display: inline-blockfloat: left#something元素和应用display: blockA,它应该完全为你工作:

#something, 
#something a { 
    padding: 0; 
    margin: 0; 
} 
#something { 
    display: inline-block; 
    background: red; 
} 
#something a:link { 
    display: block; 
    width: 200px; 
    height: 100px; 
} 

<div id="something"> 
    <a href="http://google.com"></a> 
</div> 

http://jsfiddle.net/BWPHS/6/

而且您可能要尽量避免使用内联style属性。

+0

为了避免重复,从'div'中删除'width'和'height'会更好,而使用'float:left'或'display:inline-block'代替。 – thirtydot

+0

@thirtydot - 像这样的东西? http://jsfiddle.net/BWPHS/5/(底部的小缺口有点问题。) –

+0

是的,就是这样。你可以通过在'a'上添加'vertical-align:top'(或者简单地使用'a'上的'display:block'而不是'display:inline-block')来消除底部的空白。 – thirtydot