如果我们推而广之,就能发现这其实就是在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应用是透明的,在实际应用中性能也几乎没有损失。因此这一方案应能适用于大型商业网站。
虽然我的项目尚处于计划阶段,但是原理是很简单的,任何人都可以付诸实践。
文章来源于领测软件测试网 https://www.ltesting.net/