CSS速记效率

时间:2012-07-27 20:58:23

标签: css css3 performance linear-gradients

background-color: #BADA55;background: #BADA55;之间的效率差异有多大?我意识到这很简单,但是浏览器如何提取每个值的差异。另外,在一个稍微相关的说明中,CSS3Please我注意到,对于线性渐变,他们使用background-image指定了它们。有没有理由不简单地使用background

2 个答案:

答案 0 :(得分:4)

规范没有提到浏览器应该如何实现属性的解析,特别是速记属性。所有它都是grammar,语法对它的实现没有任何说明。我怀疑,浏览器如何解析速记声明完全取决于实现,并且不容易回答(当然,除非你有源代码)。

事实上,我们有很多专门针对IE的CSS黑客攻击的主要原因是因为它对CSS的理解有多么不同(通常很差)。

  

有没有理由不简单地使用background

答案在于你的上一句话:

  

另外,在一个稍微相关的说明中,CSS3Please我注意到,对于线性渐变,他们使用background-image指定了它们。

实际上; CSS渐变被认为是用于背景的图像,并记录在Image Values module中。他们申请的个人背景属性是background-image

如果使用速记属性仅指定颜色或仅指定渐变it will use the initial value for the rest of the values。如果使用的风格差异很重要,那么性能的差异就完全不可能了,因为它不再是公平的比较。

在此示例中,第二个background速记声明将完全覆盖第一个,并为您留下纯色而没有渐变,因为background-image的初始值为none:< / p>

background: radial-gradient(white, rgba(255, 255, 255, 0)) /* transparent */;
background: /* none */ green;

简写表示法的目的是在单个声明中指定多个相关属性的值,因此为了应用渐变和颜色,应将其重写为:

background: radial-gradient(black, transparent) green;

答案 1 :(得分:1)

你的第二个例子应该是:background: #BADA55;,但无论哪种方式都很好,是你需要担心的事情。

如果你很好奇浏览器如何解析CSS我可以告诉你:它取决于(曾经使用过IE?)。对于Chrome,您可以看到来源on GitHub,可以找到Firefox来源here