今天WEB前端群里(群号63417830)无意谈到了@import url(),不太常用,争论很大。一开始是由于一个兼容问题: @import url(/css/a.css) 很简单但出现了兼容问题,在ff下无法调用样式,大家都以为是@import搞的怪,但用link后问题依然出现。经过一番讨论原来是绝对路径在ff下是不认的。

对@import url()做一下总结:
1,@import url()机制是不同于link的,link是在加载页面前把css加载完毕,而@import url()则是读取完文件后在加载,所以会出现一开始没有css样式,闪烁一下出现样式后的页面(网速慢的情况下)。
2,@import 是css2里面的,所以古老的ie5不支持。
3,当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

4,link除了能加载css外还能定义RSS,定义rel连接属性,@import只能加载css
5,@import url(xxx.css); 有最大次数的限制,经测试IE6的最大次数是31次,第32个import及以后的都不能生效,如下:

@import url(http://www.chhua.com/1.css);
……

……
@import url(http://www.chhua.com/32.css);
◎import url(http://www.chhua.com/xx.css);
虽然最多只能import 31次,但不会影响css里面的其他规则,如body{}的定义还能正常显示。
Firefox 没有发现有import的最大值。

另外,既然横向import有最大次数限制,却可以通过垂直import来继续扩展。

其实第4点和第5点不太重要,第1,2,3,点才是最致命的,至于原因,不想讲太多,做过WEB的人都应该清楚。所以,建议尽量不要用import来加载CSS样式。