出于性能原因,我正在为网页设置图像集群(类似于精灵图)。我有一个生成主图像的实用程序,以及用于引用图像映射的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文件仍然包含在内(否定了图像群集的正面性能提升)?
是否可以保证最后加载的样式始终是应用的样式?
答案 0 :(得分:4)
除了信息的“重复”之外,这种覆盖会导致性能问题吗?
是的,您正在为第二个外部样式表生成新的HTTP请求。对于大多数网页来说,太多的HTTP请求是#1减速因素。
浏览器是否仍会拉动非聚集图像,因为仍然包含原始CSS文件(否定图像聚类的正面性能提升)?
是的,浏览器将从第一个和第二个CSS文件中提取所有图像。演奏时间几乎呈线性增长(近似值)。特别是如果你要重写每个css选择器,或更改大量图像。
是否可以保证最后加载的样式始终是应用的样式?
是。除非第一个工作表在某些样式属性上使用!important
,否则将始终应用选择器的最后声明的样式。这是层叠样式表的名称。