SlideShare uma empresa Scribd logo
1 de 12
Rendering: Repaint, reflow/relayout, restyle fahai [at] TaobaoUED
Rendering HTML: ,[object Object],DOM Tree 用户操作: ,[object Object]
缩放字体Render Tree Paint ,[object Object]
样式表
内联样式Styles Structure
Render Tree 去除非视觉节点 去除隐藏节点 为所有节点(包括 textNode)建立 box(Mozilla 叫做 frame) 根:RenderView 从(0,0)到(window.innerWidth,window.innerHeight)
Reflow 重新计算页面元素位置和几何结构 渲染树中的一些节点被重新验证或者大小被重新计算 至少 reflow 一次:页面加载后
Repaint 屏幕中的一些显示需要更新 比如背景色的改变
Reflow & Repaint are Expensive 增删改 DOM 节点 display: none visibility: hidden 动画 添加样式表 用户行为:缩放,滚动
Browsers are Smart 建立缓冲队列 某些操作在破坏这种优化机制:offsetTop/Left/Width/Height
Solution 不要一个一个地去直接修改元素的样式,最好去修改样式表,然后修改元素的 className 批量处理 DOM 操作,最好不要在当前的 DOM 树中直接操作。比如:使用documentFragment来暂存一些操作;先将要进行操作的 DOM 节点 clone,更改完毕之后再去替换当前的节点 避免一直计算元素样式 减少不必要的 DOM 层级 如果做复杂的表现变化,如动画,让它脱离文档流

Mais conteúdo relacionado

Semelhante a Rendering in browser

一淘新首页总结
一淘新首页总结一淘新首页总结
一淘新首页总结jieorlin
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
重構—改善既有程式的設計(chapter 12,13)
重構—改善既有程式的設計(chapter 12,13)重構—改善既有程式的設計(chapter 12,13)
重構—改善既有程式的設計(chapter 12,13)Chris Huang
 
BizTalk練習投影片
BizTalk練習投影片BizTalk練習投影片
BizTalk練習投影片Pou Mason
 

Semelhante a Rendering in browser (6)

一淘新首页总结
一淘新首页总结一淘新首页总结
一淘新首页总结
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
Hdcms
HdcmsHdcms
Hdcms
 
Download
DownloadDownload
Download
 
重構—改善既有程式的設計(chapter 12,13)
重構—改善既有程式的設計(chapter 12,13)重構—改善既有程式的設計(chapter 12,13)
重構—改善既有程式的設計(chapter 12,13)
 
BizTalk練習投影片
BizTalk練習投影片BizTalk練習投影片
BizTalk練習投影片
 

Mais de Pu Shiming

Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Pu Shiming
 
LeSS in action
LeSS in actionLeSS in action
LeSS in actionPu Shiming
 
Pagelet in action
Pagelet in actionPagelet in action
Pagelet in actionPu Shiming
 
Charset and encoding
Charset and encodingCharset and encoding
Charset and encodingPu Shiming
 
Mars attack 2011-04-15
Mars attack 2011-04-15Mars attack 2011-04-15
Mars attack 2011-04-15Pu Shiming
 
Mars attack 2010-07-16
Mars attack 2010-07-16Mars attack 2010-07-16
Mars attack 2010-07-16Pu Shiming
 
Encoding in javascript
Encoding in javascriptEncoding in javascript
Encoding in javascriptPu Shiming
 
Mars attack 2010-07-30
Mars attack 2010-07-30Mars attack 2010-07-30
Mars attack 2010-07-30Pu Shiming
 

Mais de Pu Shiming (9)

Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
 
LeSS in action
LeSS in actionLeSS in action
LeSS in action
 
Dpl in action
Dpl in actionDpl in action
Dpl in action
 
Pagelet in action
Pagelet in actionPagelet in action
Pagelet in action
 
Charset and encoding
Charset and encodingCharset and encoding
Charset and encoding
 
Mars attack 2011-04-15
Mars attack 2011-04-15Mars attack 2011-04-15
Mars attack 2011-04-15
 
Mars attack 2010-07-16
Mars attack 2010-07-16Mars attack 2010-07-16
Mars attack 2010-07-16
 
Encoding in javascript
Encoding in javascriptEncoding in javascript
Encoding in javascript
 
Mars attack 2010-07-30
Mars attack 2010-07-30Mars attack 2010-07-30
Mars attack 2010-07-30
 

Rendering in browser