margin-left:2px;渲染速度比边距快:0 0 0 2px;?

时间:2010-04-19 20:25:07

标签: javascript css rendering

Douglas Crockford描述了JavaScript查询节点风格的结果。如何简单地询问div的边距会导致浏览器在浏览器的渲染引擎中“重排”div四次。

所以这让我想知道,在页面的初始渲染过程中(或者在Crockford的术语中,“网页滚动”)编写仅定义非零/非默认值的CSS会更快吗?举个例子:

div{  
  margin-left:2px;  
}

div{  
  margin:0 0 0 2px;  
}

我知道这种“节约”的后果是微不足道的,但我认为理解这些技术的实施方式仍然很重要。此外,这不是关于格式化CSS的问题 - 这是关于渲染CSS的浏览器的实现的问题。

参考:http://developer.yahoo.com/yui/theater/video.php?v=crockonjs-4

2 个答案:

答案 0 :(得分:2)

我不确定它是否“更快”“渲染”。但是:第二个版本比第一个版本大几个字节。 (我会假设网络比页面渲染时间慢,使第一个版本实际上“渲染得更快”)

答案 1 :(得分:1)

不,取决于您的浏览器,它会在应用样式之前以不同的方式解压缩值,而在Firefox中,它会对执行速度产生轻微影响。不管怎样,使用速记CSS都是个好主意。

如果您想了解它是如何工作的,请将Firefox解压缩值:

{margin: 0 0 0 2px;}

作为

{margin-top: 0pt;margin-right: 0pt;margin-bottom: 0pt;margin-left: .04pt;}

在将样式应用于页面之前。这是为了规范化。

*(。04pt是估计值)