当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > 了解如何减少 reflow 次数

HTML/XHTML教程
网页设计中文本输入框的一些参数说明
XHTML CSS写出正规的BLOG
初学者接触HTML了解一些HTML标记(1)
网页设计学习XHTML应用小结
常用的XHTML标签的使用技巧介绍
HTML网页META标签内容写作规范要点
XHTML 1.0 参考
HTML的一些关于颜色方面的参考
你问我答:XML与HTML的区别
入门:HTML的基本标签和属性简单介绍
带有图片预览功能的上传表单的完整HTML
HTML表格标记教程(10):单元格边距属性CELLPADDING
HTML表格标记教程(11):水平对齐属性ALIGN
HTML表格标记教程(12):边框样式属性FRAME
HTML表格标记教程(8):背景图像属性BACKGROUND
HTML表格标记教程(9):单元格间距属性CELLSPACING
HTML表格标记教程(6):暗边框色属性BORDERCOLORDARK
HTML表格标记教程(7):背景颜色属性BGCOLOR
HTML表格标记教程(5):亮边框色属性BORDERCOLORLIGHT
HTML表格标记教程(3):宽度和高度属性WIDTH、HEIGHT

HTML/XHTML教程 中的 了解如何减少 reflow 次数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-27   浏览: 40 ::
收藏到网摘: n/a

浏览器为了重新渲染部分或整个页面,重新计算页面元素位置和几何结构(geometries)的进程叫做 reflow。由于 reflow 是一种浏览器中的用户拦截(user-blocking)操作,所以了解如何减少 reflow 次数,及不同的文档属性(DOM 层级(DOM depth),CSS 效率,不用类型的 style 变化)对 reflow 次数的影响对开发者来说非常必要。有时 reflow 页面中的一个元素会 reflow 它的父元素(译注:这里是复数)以及所有子元素。

有多种用户操作和 DHTML 变化可能会触发 reflow。调整浏览器窗口的大小,用 javascript 计算样式(computed styles),在 DOM 中创建删除元素,改变元素的 class 都会触发 reflow。值得注意的是,有些操作会多次触发 reflow,超出你的想象。下图源自 Steve Souders 的演讲 "Even Faster Web Sites":

从上表可以很明显的看出,在所有浏览器中并非所有 javascript 控制的样式都触发 reflow,即使触发了触发的次数也不尽相同。同时可以看出现代浏览器在控制 reflow 次数方面做的越来越好。

在 Google,我们通过多种方式对我们的页面及 Web 应用测速,同时 reflow 是我们增加 UI 时考虑的一个关键因素。我们致力于传达轻快的(lively),交互性强的(interactive)和令人愉悦的(delightful)的用户体验。

原则

下面是一些减小 reflow 的原则:

  1. 减少不必要的 DOM 层级(DOM depth)。改变 DOM 树中的一级会导致所有层级的改变,上至根部,下至被改变节点的子节点。这导致大量时间耗费在执行 reflow 上面。
  2. 尽量减少 CSS 规则,去除未用到的 CSS。
  3. 如果做复杂的表现变化,如动画,让它脱离文档流。用绝对定位或 fixed 定位来完成。
  4. 避免不必要的复杂的 CSS 选择器,尤其是后代选择器(descendant selectors),因为为了匹配选择器将耗费更多的 CPU。

在下面的视频中(译注:引用自 youtube,无法观看,请到原文翻墙),Lindsey 介绍了一些减少 reflow 的方法。

延伸阅读