2011-10-12 107 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