2013-04-18 32 views
3

我遇到了一個問題,在一個按鈕內獲得一個SPAN(或DIV)以轉到Firefox(版本20)中按鈕的全部高度。跨度標籤可以在Firefox中繼承其輸入的高度父級嗎?

http://jsfiddle.net/spiderplant0/BwwuV/

它工作在IE10和Chrome罰款。

除了只計算每個按鈕的高度並在px中明確設置它,沒有人知道是否有解決方案嗎?

#id1_container { 
    display: block; 
    text-decoration: none; 
    cursor: pointer; 
    box-shadow: none; 
    background: none; 
    -webkit-user-select: none; 
    -moz-user-select: none; 
    user-select: none; 
    width: 100px; 
    height: 100px; 
    padding: 0; 
    border: 1px solid green; 
} 

#id1_container > * { 
    display: block; 
    height: 100%; 
    width: 100%; 
    background: pink; 
} 

<button type="button" id="id1_container"><span>hello</span></button> 
+1

看起來FF需要明確定義的位置。這不是一個最終的解決方案,但是如果你絕對放置它,它會顯示100%。刪除頂部:0和左:0看到它仍然保持100%。 http://jsfiddle.net/BwwuV/11/ – Rockafella

+0

Rockafella謝謝 – spiderplant0

回答

1

你需要用一個divbutton爲了高度生效。

<div> 
    <button type="button" id="id1_container"> 
     <span>hello</span> 
    </button> 
</div> 

Working example

和你完全誠實的,這背後的原因還是有點我不清楚,我試圖找出自己。我所知道的是,這是解決您的問題的唯一方法,而不像其他人所暗示的那樣破解破解

+0

PS:這是一個非常有趣的問題,謝謝! –

+1

尊重,使用絕對定位不是黑客,這個問題使用了一個跨度 - 所以假設需要跨度,上述解決方案的工作。如果您想要使用div,您的解決方案就可以運行。 – Rockafella

+0

@Rockafella恕我直言,當你可以簡單地添加一個可能被添加的包裝div時,無論如何改變一個元素的行爲方式都沒有意義。 –

0

由於您還沒有重置span的邊距和填充,所以對我來說這看起來像是個問題。正如@Rockafella所建議的那樣,使用絕對定位的跨度是可行的,因此它看起來對我來說並不理想,因爲你的跨度寬度和高度都是100%。因此,在標記之前嘗試使用CSS重置代碼,如Eric Meyer提供的代碼@http://meyerweb.com/eric/tools/css/reset/

+1

不要粗魯,但看到我的答案。你不需要使用絕對定位。 –

+0

我沒有說過他使用絕對定位;我指出絕對定位是可行的,儘管我認爲它是一種黑客行爲。 –

+0

我不認爲使用div會和黑客有很大不同。 –

相關問題