缓慢的DOM  
View on GitHub wznonstop

缓慢的DOM

缓慢的DOM

  • 为什么访问DOM慢?

因为浏览器把实现页面渲染的部分和解析js的部分分开实现,两者要产生连接,就要付过路费。

  • 为什么修改DOM慢?

DOM树中要显示的节点至少对应渲染树中的一个节点,DOM变化,影响元素的几何属性(宽高等),导致渲染树重新构建,此过程称为“重排(reflow)”。重排完成之后,浏览器将受到影响的部分绘制到浏览器中,此过程称为“重绘(repaint)”。重排重绘代价昂贵。

  • 技巧

减少DOM的查询;

更快的方法:document.querySelectorAll(‘#menu a’);

批量修改DOM时:脱离文档流–>改变–>把元素带回文档;

动画脱离文档流;

ie的:hover这个css选择器,用多了慢;

事件委托。

  • 其他
//这是一个死循环,因为获得到的HTML元素集合反应的是底层文档元素的实时状态  
var alldivs = document.getElementsByTagName('div');  
for (var i = 0; i < alldivs.length; i++){  
    document.body.appendChild(document.createElement('div'));  
}