如果我們推而廣之,就能發現這其實就是在IE下模擬多類的效果。對于任何一個class='a b c d…'的情況,我們只要把class的值改為a b c d … a_b a_c a_d … b_c b_d … c_d … a_b_c a_b_d … a_c_d … a_b_c_d,然后在 寫css的時候遵循一定的規則:
多個class按照字母順序書寫,即把X.a.b.c, X.a.c.b, X.c.b.a統一寫做X.a_b_c;
按照優先級順序書寫,即先寫X.a然后寫X.a_b和X.c_d,最后寫X.a_b_c_d;
就可以了。
實際上,我正在醞釀一個開源項目,遵循這個思路,并把所有這些變換自動化(通過htc來overrideclassName屬性,能把class的轉換自動化;自動產生focus,hover,first-child等偽類;通過css解析處理工具,能把CSS2.1的多classselector自動轉換為等價的IE形式)。這樣,開發者就可以自由一點的寫CSS,而不必束手束腳了。相比較Dean Edwards的IE7,這種方法所提供的改進有限,并不能給予開發者完整的CSS2/3的支持,但是邊際效用很大,更輕量級。因為本質上是使用IE自己的引擎,而不是自己實現的CSS Parser,所以對Ajax應用是透明的,在實際應用中性能也幾乎沒有損失。因此這一方案應能適用于大型商業網站。
雖然我的項目尚處于計劃階段,但是原理是很簡單的,任何人都可以付諸實踐。
文章來源于領測軟件測試網 http://www.kjueaiud.com/