回覆列表
-
1 # 使用者5023544003933
-
2 # pietr49411
我們可以用IE私有的條件編譯(conditional compilation)結合條件註釋來提供針對ie10的Hack:該腳本里面的IE排除條件註釋,以確保IE6-9不承認它,然後它功能檢測到了名為@ cc_on。 請注意/*@cc_on ! @*/中間的這個感嘆號。這樣就可以在ie10中給html元素新增一個class=”ie10″,然後針對ie10的樣式可以解除安裝這個這個選擇器下:.ie10 .example { /* IE10-only styles go here */}
對於預設不繼承(inherited 為 no)的屬性,你可以查文件,看要覆蓋掉的屬性初始值(initial value)是什麼,然後設定為這個值。比如你這個例子中,left 屬性初始值為 auto,你就可以設定 left: auto; right: 0。CSS 中還有一個屬性值關鍵字 initial,可以把任意屬性設定為初始值(left: initial,這樣不需要去一個個查初始值是什麼了)。需要注意的是,IE 不支援這個屬性。但如果你要覆蓋的屬性是一個預設繼承的屬性(inherited 為 yes),而其父元素中又至少有一個設定了該屬性(如果全都沒設定,那麼都從根元素繼承,此時根元素會取此屬性的初始值),那你可以使用 inherit 這個關鍵字,讓這個屬性「恢復」成從父元素繼承樣式。CSS 中現在有一個叫做 unset 的關鍵字,它會對上面不同型別的屬性分別起到 initial 和 inherit 的效果。為啥要有這樣一個關鍵字呢?因為這會使得書寫更簡單,我不再需要在重置時去考慮這個屬性是哪種型別然後區分 initial 和 inherit 了。另外因為 CSS 增加了快速設定所有屬性的 all 屬性,這樣可以在不區分具體屬性時快速 reset 樣式,寫法也很簡單:all: unset。unset 的瀏覽器支援度比 all 稍好一些,具體的自己查資料吧。問題又來了,上面的這些寫法,會把瀏覽器預設樣式也抹去,全部恢復成 CSS 規範定義的初始樣式,這往往也不是我們期望的。於是 CSS Cascading and Inheritance Level 4 中又增加了 revert 關鍵字,表示重置當前樣式來源(style origin)的樣式。也就是說我們如果寫在 HTML 中引入的程式碼裡,不會影響瀏覽器預設樣式。不過目前只有 Safari 實現了這個屬性值。