2011-07-26 16 views
8

的IE和WebKit瀏覽器似乎同意「的位置是:絕對」當應用到「顯示:直列塊」(或者,在IE7的情況下,用「hasLayout的」設置簡單的「內聯」元件)應導致塊定位在內。也就是說,具有:將「display:inline-block」與「position:absolute」結合:會發生什麼?

Hello there <label style='position: absolute; display: inline-block'>sir</label> 

這些瀏覽器將會顯示:

Hello theresir 

Hello there sir 

不過,Firefox(3及以上,我認爲)會給這樣的:

Hello there 
sir 

也就是說,他們讓「inline-block」e lement開始一條新線。現在,顯然不是沒有與「position:absolute」結合在一起,也不是「position:absolute」沒有「display:inline-block」的情況。這是一個錯誤,還是隻是一個不好的(模棱兩可的)規範?

Here是一個非常簡單的jsfiddle。

編輯 —也許這什麼Firefox沒有用「的立場:絕對的」,並沒有「顯示」設置...)

+2

'position:absolute' should force'display:block'。請參閱第2號[此處](http://www.w3.org/TR/CSS21/visuren.html#dis-pos-flo)。我不知道這裏發生了什麼...... – thirtydot

+0

嗯...這表明Firefox是正確的,其他人都是錯的...... – Pointy

+0

Opera的行爲與Firefox相同,所以我傾向於同意你的看法。 WebKit錯誤和IE錯誤? – thirtydot

回答

4

這裏的正確的行爲實際上並沒有在規範中定義。基本上,垂直位置應該是「好像位置不是絕對的,有點」。更確切地說,中http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height這部分是相關的:

但是,而不是實際計算該 假想框的尺寸,用戶代理可以自由地做出一個猜測其可能 位置。

也就是說,實現此功能的壁虎代碼早於Gecko的內聯塊實現,因此只檢查原始顯示爲「內聯」。我提交https://bugzilla.mozilla.org/show_bug.cgi?id=674435來研究在Gecko中改變這一點。

+0

哇你似乎根本不知道的東西,這是很酷:-) – Pointy

+0

你說的也怎麼樣實現我的懷疑匹配:-) – Pointy

+0

@Pointy知道這東西是有點我的日常工作中。 ;) –