<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="分析影响网页性能的2个关键地方Reflow和Repaint" id="card1">
<p> 游客</p><p>
标题:分析影响网页性能的2个关键地方Reflow和Repaint<br/>
正文:<br/>
Yahoo!性能工程师Nicole Sullivan写了一篇非常值得一读的分析Reflow和Repaint的文章。repaint(重绘)是在一个元素的外观被改变，但没有改变布局的情况下发生，如改变visibility、outline、前景色。“According to Opera , repaint is expensive because the browser must verify the visibility of all other nodes in the DOM tree.”当repaint发生时，浏览器会验证DOM树上的所有其它结点的visibility属性。reflow(回流)是导致DOM脚本执行低效的关键因素之一。页面上任何一个结点触发reflow，都会导致它的子结点及祖先结点重新渲染。Nicole举了个例子：&amp;lt;body&amp;gt;<br/>&amp;lt;div class=”error”&amp;gt;<br/>&amp;lt;h4&amp;gt;My Module&amp;lt;/h4&amp;gt;<br/>&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Error:&amp;lt;/strong&amp;gt;Description of the error…&amp;lt;/p&amp;gt;<br/>&amp;lt;h5&amp;gt;Corrective action required:&amp;lt;/h5&amp;gt;<br/>&amp;lt;ol&amp;gt;<br/>&amp;lt;li&amp;gt;Step one&amp;lt;/li&amp;gt;<br/>&amp;lt;li&amp;gt;Step two&amp;lt;/li&amp;gt;<br/>&amp;lt;/ol&amp;gt;<br/>&amp;lt;/div&amp;gt;<br/>&amp;lt;/body&amp;gt;当p结点上发生reflow，div.error和body也会重新渲染，甚至h5和ol也会受到影响。Nicole总结了在哪些情况下会导致reflow发生：改变窗囗大小改变文字大小添加/删除样式表内容的改变，如用户在输入框中敲字(这样也会-_-||)激活伪类，如:hover (IE里是一个兄弟结点的伪类被激活)操作class属性脚本操作DOM计算offsetWidth和offsetHeight设置style属性reflow是不可避免的，只能将reflow对性能的影响减到最小。Nicole提出6点建议：Change classes on the<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1046&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1046&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1046&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1046&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1046">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1046">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>