缓慢的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'));
}