SlideShare a Scribd company logo
Inside the Browser浏览器渲染原理
WHY?HTML布局无处不在已经不局限与浏览器
Summary浏览器的工作过程资源下载HTML解析CSS计算布局渲染浏览器对细节的具体优化手段FirefoxWebkit / Chrome
How?
下载一个HTTP库能够搞定?DNSClientWebRequestNetworkStreamHTMLParser够了吗?不仅仅一个文件!<script src…<link href…<imgsrc…<iframesrc…何时开始下载它们?
下载<head>中的<script>和<link>服务器端Response.Flush()<body>中的<script>document.writenew Image().src = …defer VS async
下载资源优先级link[rel=stylesheet] / scriptobject / img / iframelink[rel=prefetch]脚本依赖下载阻塞 VS 执行阻塞并行度服务器压力 VS 客户端效率http://www.otakustay.com/browser-strategy-loading-external-resource/
下载Socket重用Connection: keep-aliveContent-LengthTransfer-Encoding: chucked正确性保证Content-MD5断点续传Accept-RangeContent-Range
下载BS的精髓 – 缓存验证型缓存Last-Modified & If-Modified-Since / If-Unmodified-SinceETag &If-Match / If-None-MatchIf-Range非验证型缓存Cache-ControlExpires缓存失效Vary/ Via / Date / Agehttp://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
下载缓存年龄计算age_value – Age响应头的值date_value – Date响应头的值request_time – 发起请求的本地时间response_time – 收到响应的本地时间now – 当前本地时间apparent_age = max(0, response_time - date_value);corrected_received_age = max(apparent_age, age_value);response_delay = response_time - request_time;corrected_initial_age = corrected_received_age + response_delay;resident_time = now - response_time;current_age   = corrected_initial_age + resident_time;
下载缓存过期计算freshness_lifetime = 使用max-age时为max-age的秒数使用Expires时为(Expires - Date)response_is_fresh= (freshness_lifetime > current_age)max-age=0 VS no-cachemax-age=0 – 要求浏览器向服务器验证缓存no-cache– 要求浏览器向服务器请求全新内容
下载输入 – 资源URI输出 –HTML字符流HTTP的超链接特性注定资源之间有关联的依赖外部资源位置、类型不同影响下载时机Response.Flush对下载的影响缓存机制复杂但完善
解析Demo
解析只有这些?document.writeTokenizerTree ConstructScriptDOM Tree
解析输入 – HTML字符流输出 – DOM TreeHTML无法用自顶向下或自底向上的方法解析过程 – 序列化 -> 转义处理 -> 标签匹配脚本执行会增加解析的回溯DOM操作回溯至标签匹配过程document.write回溯至序列化过程
CSS计算元素 – 匹配样式div>div>div>div>div…>div { color: red; }dom.parentNodeistanceofHTMLDivElement && div.parentNode.parentNodeinstanceofHTMLDivElement && div.parentNode.parentNode.parentNodeinstanceof …问题样式表很大,对内存造成压力每个元素生成一个StyleObject浪费内存查找元素匹配的样式消耗时间和CPU如果是div div div div … div呢?
CSS计算Webkit – 特定条件下样式共享鼠标状态(:hover / down / clicked)相同没有id标签名相同class名称相同attribute均相同链接状态(:link / :visited)相同聚集状态(:active / :focus)相同不能匹配属性选择器没有内联样式没有兄弟选择器(+ / :first-child / :last-child / …)
CSS计算FirefoxRule Tree + Style Context TreeDEMOhttps://developer.mozilla.org/en/Style_System_Overview
CSS计算Map{ string: [ selector, selector, … ] }以最右选择器为依据匹配查找id map查找class map查找general map确定selector完全匹配遍历general map
CSS计算#title { … }p.error { … }input[type=radio] { … }#navli~li a { … }.fix-clear * { … }<div class=“fix-clear”><span id=“title” class=“error”>Erorr Occurred!</span></div>
CSS计算CSS层级(优先级)来源层级浏览器UA样式用户样式作者样式用户样式 + !important作者样式 + !important样式层级1,1,1,1算法inline(0/1), count(id), count(attribute), count(tag)ul#navolli.red
CSS计算DOM TreeRender Treehttps://developer.mozilla.org/en/Mozilla_Style_System_Documentation
CSS计算元素没有渲染对象head / meta / script元素有多个渲染对象html / liselect / input[type=file]通过CSS改变渲染对象display: none::before / ::after
CSS计算输入–DOMTree输出 –Render Tree目标– 内存优化、匹配效率优化方法– 样式共享、选择器索引DOM Tree !== Render Tree
布局流布局display: inline / inline-block / blockfloat: left / rightclear: left / right / bothposition: static / relative / absolute / fixedHTML三条流文档流、浮云流、定位流其它因素display: list-itemdisplay: run-inhttp://www.w3.org/TR/css3-box/#the-lsquo
布局table布局display: table / inline-table / table-row-group / table-header-group / table-footer-group / table-row / table-column-group / table-column / table-cell / table-captiondiv VS table – 流布局 VS table布局
布局坐标系 – 左上角为0,0点,右|下为正坐标布局是递归过程流布局可自左向右、自上而下进行,流中靠后的元素不会影响流中靠前的元素的布局(无回溯)table布局需要回溯才能够完成(知道每一个单元格的大小,才能完成整个布局)反对table布局的原因– 回溯对渲染的影响DEMO
布局全局Reflow整个RenderTree全部重新计算布局全局布局样式变更 – body { font-size: 12px; }/ 添加新样式表窗口大小变化局部Reflow仅标识为needLayout的渲染元素计算布局Render Tree中插入新的渲染元素渲染元素属性变化Reflow会引起另一个Reflow – Reflow导致滚动条位置变化
布局同步Reflow全局Reflow通常同步进行读取offsetWidth/offsetHeight等属性异步Reflow局部Reflow通常异步进行FireFox:Reflow任务进入线程Queue,任务调度器负责执行Webkit:定时器定时遍历RenderTree,布局所有needLayout对象Reflow任务可合并,一次脚本执行过程中多个样式修改仅做一次Reflow,但是有阀值DEMO
布局父元素确定自己的宽度开始遍历子元素指定子元素渲染器的x/y属性判断子元素是否需要布局,调用layout函数累计所有子元素的width/padding/border/margin,计算自己的宽度同时考虑availWidth / sizing-box / min-width / max-width将needLayout改为false
布局文字布局text-align: justifiedwhite-space: nowrap/ pre / pre-wrapoverflow: hidden / visible换行计算每行一个line-box负责渲染当需要换行时,通知父元素,父元素创建新的line-box并重新布局换行算法与文化相关英文单词不能断开中文标点不能在行首
布局有流式布局和table布局2种table布局需要回溯,流式布局通常不需要Reflow的分类触发类型上 – 全局和局部执行类型上 – 同步和异步布局过程递归进行坐标系为左上角0,0点,右、下为正方向
渲染transform / filter / z-index / color / visibility…Reflow VS Repaint – display: none VS visibility: hidden渲染顺序(CSS2):background colorbackground imageborderchildrenoutlinehttp://www.w3.org/TR/CSS21/zindex.html
渲染Firefox – display list找到Render Tree中在指定Repaint区域内的渲染对象Render Tree的渲染对象经Stacking Order排序后生成[background(A), border(A), border(B), outline(A)]避免多次遍历Render Tree[background(A, B), border(A, B), outline(A, B)]完全不可见的元素不可被加到displaylist中display: none;opacity: 0;
渲染Webkit– rectangle storageRepaint前先将原有矩形内容保存为位图计算重绘后的矩形内容的位图比对2个位图,仅绘制差异部分Chrome的Repaint在独立进程中进程间通过事件进行传递和响应绘制监听器负责监听重绘事件,把事件委托给Render Tree的根Repaint永远从Render Tree的根开始,遍历并找到需要重绘的节点,对节点调用重绘(递归至子节点)

More Related Content

What's hot (14)

Inside browser
Inside browserInside browser
Inside browser
mysqlops
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
Wu tianhao
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
 
Html&css培训 舒克
Html&css培训 舒克Html&css培训 舒克
Html&css培训 舒克
jay li
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
 
CSS 培训
CSS 培训CSS 培训
CSS 培训
S S
 
AJAX Basic
AJAX BasicAJAX Basic
AJAX Basic
Ryan Chung
 
Koubei banquet 34
Koubei banquet 34Koubei banquet 34
Koubei banquet 34
Koubei UED
 
Browser Object Model
Browser Object ModelBrowser Object Model
Browser Object Model
jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
jay li
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
yiming he
 
Inside browser
Inside browserInside browser
Inside browser
mysqlops
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
Wu tianhao
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
 
Html&css培训 舒克
Html&css培训 舒克Html&css培训 舒克
Html&css培训 舒克
jay li
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
 
CSS 培训
CSS 培训CSS 培训
CSS 培训
S S
 
Koubei banquet 34
Koubei banquet 34Koubei banquet 34
Koubei banquet 34
Koubei UED
 
Browser Object Model
Browser Object ModelBrowser Object Model
Browser Object Model
jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
jay li
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
yiming he
 

Viewers also liked (20)

Cables i satèl·lits internet david torrent
Cables i satèl·lits internet david torrentCables i satèl·lits internet david torrent
Cables i satèl·lits internet david torrent
turri_rieju_rrx
 
etaireies_2011
etaireies_2011etaireies_2011
etaireies_2011
Τροκτικο Δυο
 
สื่อและแหล่งการเรียนรู้ บทที่๗Ddd
สื่อและแหล่งการเรียนรู้ บทที่๗Dddสื่อและแหล่งการเรียนรู้ บทที่๗Ddd
สื่อและแหล่งการเรียนรู้ บทที่๗Ddd
jaacllassic
 
парикмахер
парикмахерпарикмахер
парикмахер
pronkina
 
вставные конструкции
вставные конструкциивставные конструкции
вставные конструкции
izrustem
 
O capuchinho vermelho(diferente)
O capuchinho vermelho(diferente)O capuchinho vermelho(diferente)
O capuchinho vermelho(diferente)
bcsd2000
 
pandolfi gadget
pandolfi gadgetpandolfi gadget
pandolfi gadget
guest68a832
 
As preocupações com o idoso vieram impostas pela legislação estrangeira
As preocupações com o idoso vieram impostas pela legislação estrangeiraAs preocupações com o idoso vieram impostas pela legislação estrangeira
As preocupações com o idoso vieram impostas pela legislação estrangeira
GLAUCIA CASTRO
 
La Discriminacion
La DiscriminacionLa Discriminacion
La Discriminacion
rosalili20
 
Todos Los Documentos 4ºA Victor Rustarazo
Todos Los Documentos 4ºA Victor RustarazoTodos Los Documentos 4ºA Victor Rustarazo
Todos Los Documentos 4ºA Victor Rustarazo
xuky94
 
Presentacion Royaltel
Presentacion RoyaltelPresentacion Royaltel
Presentacion Royaltel
ignacio roberto
 
Problemas De Aprendizaje En Los Adolescentes
Problemas De Aprendizaje En Los AdolescentesProblemas De Aprendizaje En Los Adolescentes
Problemas De Aprendizaje En Los Adolescentes
veronica estrada
 
Evolucion De La Historia De La Comunicacion
Evolucion De La Historia De La ComunicacionEvolucion De La Historia De La Comunicacion
Evolucion De La Historia De La Comunicacion
inguijohan
 
Alergia não registada ou não valorizada
Alergia não registada ou não valorizadaAlergia não registada ou não valorizada
Alergia não registada ou não valorizada
Sandra Melo
 
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
guest0f296b
 
Gacetilla Municipal 19 De Octubre
Gacetilla Municipal 19 De OctubreGacetilla Municipal 19 De Octubre
Gacetilla Municipal 19 De Octubre
gueste4bf76
 
pandolfi carolina gadget
pandolfi carolina gadgetpandolfi carolina gadget
pandolfi carolina gadget
guest68a832
 
Ronalds onderwijsvisie
Ronalds onderwijsvisieRonalds onderwijsvisie
Ronalds onderwijsvisie
ronaldpieck
 
Herramientas 2.0 que todo periodista debe conocer
Herramientas 2.0 que todo periodista debe conocerHerramientas 2.0 que todo periodista debe conocer
Herramientas 2.0 que todo periodista debe conocer
Carlos Terrones Lizana
 
Operadores
OperadoresOperadores
Operadores
Lauriita23
 
Cables i satèl·lits internet david torrent
Cables i satèl·lits internet david torrentCables i satèl·lits internet david torrent
Cables i satèl·lits internet david torrent
turri_rieju_rrx
 
สื่อและแหล่งการเรียนรู้ บทที่๗Ddd
สื่อและแหล่งการเรียนรู้ บทที่๗Dddสื่อและแหล่งการเรียนรู้ บทที่๗Ddd
สื่อและแหล่งการเรียนรู้ บทที่๗Ddd
jaacllassic
 
парикмахер
парикмахерпарикмахер
парикмахер
pronkina
 
вставные конструкции
вставные конструкциивставные конструкции
вставные конструкции
izrustem
 
O capuchinho vermelho(diferente)
O capuchinho vermelho(diferente)O capuchinho vermelho(diferente)
O capuchinho vermelho(diferente)
bcsd2000
 
As preocupações com o idoso vieram impostas pela legislação estrangeira
As preocupações com o idoso vieram impostas pela legislação estrangeiraAs preocupações com o idoso vieram impostas pela legislação estrangeira
As preocupações com o idoso vieram impostas pela legislação estrangeira
GLAUCIA CASTRO
 
La Discriminacion
La DiscriminacionLa Discriminacion
La Discriminacion
rosalili20
 
Todos Los Documentos 4ºA Victor Rustarazo
Todos Los Documentos 4ºA Victor RustarazoTodos Los Documentos 4ºA Victor Rustarazo
Todos Los Documentos 4ºA Victor Rustarazo
xuky94
 
Problemas De Aprendizaje En Los Adolescentes
Problemas De Aprendizaje En Los AdolescentesProblemas De Aprendizaje En Los Adolescentes
Problemas De Aprendizaje En Los Adolescentes
veronica estrada
 
Evolucion De La Historia De La Comunicacion
Evolucion De La Historia De La ComunicacionEvolucion De La Historia De La Comunicacion
Evolucion De La Historia De La Comunicacion
inguijohan
 
Alergia não registada ou não valorizada
Alergia não registada ou não valorizadaAlergia não registada ou não valorizada
Alergia não registada ou não valorizada
Sandra Melo
 
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
Comunicado%20 Rechazo%201290%20 De%2009%20 Evaluaci%C3%93 N%20 Escolar[1]
guest0f296b
 
Gacetilla Municipal 19 De Octubre
Gacetilla Municipal 19 De OctubreGacetilla Municipal 19 De Octubre
Gacetilla Municipal 19 De Octubre
gueste4bf76
 
pandolfi carolina gadget
pandolfi carolina gadgetpandolfi carolina gadget
pandolfi carolina gadget
guest68a832
 
Ronalds onderwijsvisie
Ronalds onderwijsvisieRonalds onderwijsvisie
Ronalds onderwijsvisie
ronaldpieck
 
Herramientas 2.0 que todo periodista debe conocer
Herramientas 2.0 que todo periodista debe conocerHerramientas 2.0 que todo periodista debe conocer
Herramientas 2.0 que todo periodista debe conocer
Carlos Terrones Lizana
 

Similar to Inside the-browser (20)

Inside the browser
Inside the browserInside the browser
Inside the browser
otakustay
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
 
[2008]网站重构 -who am i
[2008]网站重构 -who am i[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
 
HTML & JavaScript
HTML & JavaScriptHTML & JavaScript
HTML & JavaScript
Sanji Zhang
 
Website Pracice Focusing on UX, Chinese
Website Pracice Focusing on UX, ChineseWebsite Pracice Focusing on UX, Chinese
Website Pracice Focusing on UX, Chinese
multiple1902
 
网页制作基础
网页制作基础网页制作基础
网页制作基础
loo2k
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
Xiujun Ma
 
前端開發學習簡介
前端開發學習簡介前端開發學習簡介
前端開發學習簡介
peterju
 
Css
CssCss
Css
fzuhua
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
 
HTML5 介绍
HTML5 介绍HTML5 介绍
HTML5 介绍
S S
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Frank Xu
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
 
网易相册前端页面开发规范2010版
网易相册前端页面开发规范2010版网易相册前端页面开发规范2010版
网易相册前端页面开发规范2010版
昌里大金猪 Luke
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
luolonghao
 
网页设计及制作(Div+css)
网页设计及制作(Div+css)网页设计及制作(Div+css)
网页设计及制作(Div+css)
lrk3
 
网页制作基础
网页制作基础网页制作基础
网页制作基础
loo2k
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
 
让我们的页面跑得更快
让我们的页面跑得更快让我们的页面跑得更快
让我们的页面跑得更快
li qiang
 
Inside the browser
Inside the browserInside the browser
Inside the browser
otakustay
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
 
[2008]网站重构 -who am i
[2008]网站重构 -who am i[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
 
HTML & JavaScript
HTML & JavaScriptHTML & JavaScript
HTML & JavaScript
Sanji Zhang
 
Website Pracice Focusing on UX, Chinese
Website Pracice Focusing on UX, ChineseWebsite Pracice Focusing on UX, Chinese
Website Pracice Focusing on UX, Chinese
multiple1902
 
网页制作基础
网页制作基础网页制作基础
网页制作基础
loo2k
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
Xiujun Ma
 
前端開發學習簡介
前端開發學習簡介前端開發學習簡介
前端開發學習簡介
peterju
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
 
HTML5 介绍
HTML5 介绍HTML5 介绍
HTML5 介绍
S S
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Frank Xu
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
 
网易相册前端页面开发规范2010版
网易相册前端页面开发规范2010版网易相册前端页面开发规范2010版
网易相册前端页面开发规范2010版
昌里大金猪 Luke
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
luolonghao
 
网页设计及制作(Div+css)
网页设计及制作(Div+css)网页设计及制作(Div+css)
网页设计及制作(Div+css)
lrk3
 
网页制作基础
网页制作基础网页制作基础
网页制作基础
loo2k
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
 
让我们的页面跑得更快
让我们的页面跑得更快让我们的页面跑得更快
让我们的页面跑得更快
li qiang
 

Inside the-browser

Editor's Notes

  • #3: 因此,开发人员已经不局限与针对浏览器提供的功能进行编程,往往会涉及到对HTML / CSS /javascript容器的实现
  • #4: 课程内容
  • #5: 浏览器基本工作过程Q:是不是需要等整个HTML下载完成才能够开始解析?
  • #6: 下载只是一个HTTP库的问题吗?
  • #7: 影响下载的因素1、&lt;head&gt;中的内容会优先下载,Chrome对head中的内容串行下载,阻塞body中的内容2、Flush提供浏览器提前解析、渲染的机会,BigPipe的核心机制,Flush的本质是Transfer-Encoding: chucked3、IE6-7阻塞下载、解析、执行,其他浏览器并行下载、顺序执行4、DOM树的同步,以及IE的诡异BUG5、唯一不连接DOM树也可以发起请求的元素,响应的Content-Type非图片则只接收1个字节6、defer保证执行时机,async不保证defer在DOMTree构建完成之后,DOMContentLoaded事件触发之前
  • #9: 下载优化方面其它细节举例
  • #12: Q:max-age=0和no-cache有什么区别?
  • #13: 总结
  • #14: HTML解析的过程
  • #15: 各种因素的影响,可能导致解析过程中要进行回溯Q:什么样的script会影响到Tokenizer
  • #16: 总结
  • #17: 正常思维下,匹配样式只需要写2层循环即可完成但是完成不代表可用,存在着种种问题
  • #18: Q:一般来说怎么解决内存占用过大的问题
  • #19: Firefox采取了更为复杂的解决方案,在CSS计算的过程中引入了2棵树
  • #20: Q:一般来说,需要频繁查询的场合,如何优化查询的效率
  • #21: Q1:将以上选择器对应到4个Map中Q2:红色部分的span元素的样式匹配过程该部分为“如何优化选择器匹配”,不要当作“如何写优化的选择器”的参考,写CSS永远以语义和结构为最优先,不要在意性能
  • #22: Q:ul#navolli.red的CSS仅重是多少inline – 0id – 1attribute – 1tag – 3output – 0,1,1,3
  • #23: DOM Tree和RenderTree的关系
  • #24: Q:什么情况下出现该现象
  • #25: 总结
  • #26: list-item: generate a block box and a inline box for the list markerA run-in box behaves as follows:If the run-in box contains a block box, the run-in box becomes a block box.If a sibling block box (that does not float and is not absolutely positioned) follows the run-in box, the run-in box becomes the first inline box of the block box. A run-in cannot run in to a block that already starts with a run-in or that itself is a run-in.Otherwise, the run-in box becomes a block box.
  • #27: 并不是用table标签才是table布局
  • #28: 有人会说ol下的li前的数字标识,随着数字位数的增加,也会因为宽度增大影响布局用示例说明,li的marker-box是设定为普通的流式布局中的box,默认样式为overflow: hidden
  • #29: Reflow在触发类型上的分类
  • #30: Reflow在执行环境上的分类经常有人提到在遍历数组的时候要缓存length属性,个人是比较反感这种说法的,事实上缓存length属性对性能的影响微乎其微但是有一些属性,缓存与不缓存却能产生极大的性能差距,看一下offsetWidth属性缓存对性能的影响
  • #31: 布局计算流程
  • #32: 元素内部文字布局过程
  • #33: 总结Q:style标签在head和body中的区别?
  • #34: 影响渲染的CSS属性渲染的顺序
  • #35: Firefox对渲染过程的优化
  • #36: Webkit对渲染过程的优化Chrome的特殊性