CSS中@import的问题

网上很多文章说不建议使用css的import,因为它相当于把CSS放到页面的最底部。

其实不然,想下原理就知道了,import会导致CSS不能并行下载,浏览器要先下载使用了import的css,解析完后才知道还有另外一个css需要下载,然后再去下载、解析,之后才去进行render的步骤,这样就会导致页面白屏时间加长了。

比如

[a.css]:

 

@import base.css

...


[a.html]

 

 

<link rel="stylesheet" href="a.css"> 

这样浏览器会先下载a.css,解析完后才知道还有base.css需要下载,然后再去下载base.css,再解析base.css,再去渲染页面,页面就会有一段时间的白屏。

 

所以建议<link>标签,让两个css可以并行下载:

 

<link rel="stylesheet" href="base.css"> 
<link rel="stylesheet" href="a.css"> 


但是,另外一种情况下我们是可以使用import的,比如使用预编译的时候,因为最终还是会编译生成一份CSS。

 

比如使用webpack进行模块化开发的时候:

[base.less]

 

@colorMain: #ff0;

...

[a.less]

 

 

#testa {
    color: @colorMain;
}

 

[b.less]

 

#testb {
    color: @colorMain;
}

 

最后用webpack的extract-text-webpack-plugin生成bundle.css,而base.less,a.less和b.less都已经被打包进去这bundle.css里面了,所以就不存在import的问题。

以上是模块化开发方式,方便模块的管理和需求的变更,比如做完页面后产品同学说这个颜色不行,统一都改成红色吧,这时只需要修改base.less里的@mainColor:red;然后重新编译一次就OK了。

但是,同时又抛出了另外一个问题,不知道大家发现没有,在以上生成的bundle.css文件中,包含了两份base.less

所以要注意,base.less最好只包含LESS/SASS/STYLUS变量的定义,不要包含reset.css或者mixin等信息,避免重复。


 

==============

冷知识学习网

用车养车有问题?找车多星

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值