WEB开发网
开发学院网页设计JavaScript JavaScript优化细节 阅读

JavaScript优化细节

 2010-09-14 13:48:11 来源:WEB开发网   
核心提示: 改变窗体大小更改字体添加移除stylesheet块内容改变哪怕是输入框输入文字CSS虚类被触发如 :hover更改元素的className当对DOM节点执行新增或者删除操作或内容更改时,动态设置一个style样式时(比如element.style.width="10px"

改变窗体大小

更改字体

添加移除stylesheet块

内容改变哪怕是输入框输入文字

CSS虚类被触发如 :hover

更改元素的className

当对DOM节点执行新增或者删除操作或内容更改时。

动态设置一个style样式时(比如element.style.width="10px")。

当获取一个必须经过计算的尺寸值时,比如访问offsetWidth、clientHeight或者其他需要经过计算的CSS值(在兼容DOM的浏览器中,可以通过getComputedStyle函数获取;在IE中,可以通过currentStyle属性获取)。

解决问题的关键,就是限制通过DOM操作所引发回流的次数:

1.在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入。

2.在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除:

通过removeChild()或者replaceChild()实现真正意义上的删除。

设置该元素的display样式为“none”。

修改操作完成后,将上面这个过程反转过来,建议使用第2种方式。

3.CSS部分

另外一个经常引起回流操作的情况是通过style属性对元素的外观进行修改,如element.style.backgroundColor = "blue";

每次修改元素的style属性,都肯定会触发回流操作,要解决这个问题可以:

使用更改className的方式替换style.xxx=xxx的方式。

使用style.cssText = '';一次写入样式。

避免设置过多的行内样式

添加的结构外元素尽量设置它们的位置为fixed或absolute

避免使用表格来布局

避免在CSS中使用JavaScript expressions(IE only)

4.将获取的DOM数据缓存起来。这种方法,对获取那些会触发回流操作的属性(比如offsetWidth等)尤为重要。

Tags:JavaScript 优化 细节

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接