覆盖CSS样式的性能影响

时间:2010-10-25 19:11:01

标签: css performance browser

出于性能原因,我正在为网页设置图像集群(类似于精灵图)。我有一个生成主图像的实用程序,以及用于引用图像映射的css。

为简单起见,我宁愿在常规css文件之后包含新的css,而不是编写脚本来搜索和替换原始css中的所有类。在html(伪代码)中有类似的东西:

<LINK href="normal.css" rel="stylesheet" type="text/css">

if(%=usingImageCluster=%)
      <LINK href="master.css" rel="stylesheet" type="text/css">

因此,normal.css中定义的所有样式都会被master.css中的新样式覆盖。

几个问题:

  • 除了“重复”信息外,这种覆盖是否会导致性能问题?

  • 浏览器是否仍会提取非群集图像,因为原始CSS文件仍然包含在内(否定了图像群集的正面性能提升)?

  • 是否可以保证最后加载的样式始终是应用的样式?

1 个答案:

答案 0 :(得分:4)

  

除了信息的“重复”之外,这种覆盖会导致性能问题吗?

是的,您正在为第二个外部样式表生成新的HTTP请求。对于大多数网页来说,太多的HTTP请求是#1减速因素。

  

浏览器是否仍会拉动非聚集图像,因为仍然包含原始CSS文件(否定图像聚类的正面性能提升)?

是的,浏览器将从第一个和第二个CSS文件中提取所有图像。演奏时间几乎呈线性增长(近似值)。特别是如果你要重写每个css选择器,或更改大量图像。

  

是否可以保证最后加载的样式始终是应用的样式?

是。除非第一个工作表在某些样式属性上使用!important,否则将始终应用选择器的最后声明的样式。这是层叠样式表的名称。