2014-02-16 53 views
0

According to w3schoolsoutline的語法是:
outline: <color> <style> <width>;並且三者中的任何一個都可能丟失。如何解釋`outline:inherit 0`?

而價值inherit是三個有效值,或單個outline: inherit意味着它應該繼承所有三個。

我在問這是因爲我正在爲CSS縮小器的屬性優化器工作。根據上面的鏈接,
outline: inherit none 3px相當於outline: inherit 3px,並
outline: invert inherit 3px也相當於outline: inherit 3px
但結果似乎過於ambigous。

所以問題是,瀏覽器如何解釋outline: inherit 0px?他們是否將顏色或風格分配爲inherit

+3

請不要鏈接「根據W3C」與w3schools.com _ever_ - 因爲:http://www.w3fools.com/。至於問題本身:在不同瀏覽器中進行自己的測試的結果是什麼? – CBroe

+1

@CBroe我完全同意你的看法,特別是因爲你可以看到人們開始混淆萬維網聯盟(W3C)和這個第三方網站。 – idmean

+1

不要介意W3C和W3School之間的混淆 - W3School甚至會說「繼承的價值是三個有效的價值」? – BoltClock

回答

5

它被忽略。這是目前瀏覽器的做法和CSS中的預期原則:對於諸如outline這樣的速記符號,允許將關鍵字inherit作爲值(使所有子屬性繼承),但不與任何其他值一起使用。原因很明顯:否則價值就不會有明確的解釋。在值inherit 0中,值0只能爲outline-width的值,但inherit可能爲outline-styleoutline-color的值。

原理在CSS 2.1規範的附錄中提到,在C.3.1。理論上,附錄C是對變化的信息描述,而不是規範性的,在這裏它並不反映實際的變化。也就是說,這種說法很糟糕:描述了意圖,但是規範地說CSS 2.1沒有這個原則,並且認爲outline: inherit 0是有效的(但是W3C CSS驗證器拒絕它)。參看到Is this font: shorthand property syntax valid? (My reading of the spec says yes, but half of my installed browsers disagree.)(它涉及與font簡寫相同的問題)。

如果希望所有outline屬性被繼承,但寬度設置爲零(這將是有點怪),你需要兩個聲明

outline: inherit; 
outline-width: 0; 
+0

謝謝Jukka的回答,我不知道''inherit'不能用在速記聲明中。 – Venemo