SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Como os browsers funcionam
Filipi Zimermann 
@filipiz
A melhor experiência
Do que é 
composto 
um browser?
‣ WebKit 
‣ Gecko 
‣ Blink 
‣ Trident 
‣ Tasman 
‣ KHTML 
‣ Lynx 
‣W3M
O processo de 
renderização
HTML Parser
Tokenizer 
<html> 
<body> 
Hello world 
</body> 
</html>
Construção da árvore DOM 
<html> 
<body> 
Hello world 
</body> 
</html>
Construção da árvore DOM
Construção da árvore DOM
Construção da árvore DOM
HTML Parser 
Tolerância a erros
</br> vira <br> 
if (t->isCloseTag(brTag) && 
m_document->inCompatMode()) { 
reportError(MalformedBRError); 
t->beginTag = true; 
}
<form> aninhado 
if (!m_currentFormElement) { 
m_currentFormElement = new 
HTMLFormElement(formTag, m_document); 
}
Limite de tags aninhadas 
bool 
HTMLParser::allowNestedRedundantTag(const 
AtomicString& tagName) 
{ 
! 
unsigned i = 0; 
for (HTMLStackElem* curr = m_blockStack; 
i < cMaxRedundantTagDepth && curr 
&& curr->tagName == tagName; 
curr = curr->next, i++) { } 
return i != cMaxRedundantTagDepth; 
}
CSS Parser
Aplicando as 
regras de estilo
Prioridades 
1. Browser declarations 
2. User normal declarations 
3. Author normal declarations 
4. Author important declarations 
5. User important declarations
Prioridades
‣ Evite seletores longos 
‣ Remova as declarações CSS que não são 
necessárias na página 
‣ Utilize seletores específicos
Árvore de 
Renderização e 
Layout
RenderObject* RenderObject::createObject(Node* node, RenderStyle* style) 
{ 
Document* doc = node->document(); 
RenderArena* arena = doc->renderArena(); 
... 
RenderObject* o = 0; 
! 
switch (style->display()) { 
case NONE: 
break; 
case INLINE: 
o = new (arena) RenderInline(node); 
break; 
case BLOCK: 
o = new (arena) RenderBlock(node); 
break; 
case INLINE_BLOCK: 
o = new (arena) RenderBlock(node); 
break; 
case LIST_ITEM: 
o = new (arena) RenderListItem(node); 
break; 
... 
} 
! 
return o; 
}
Pintura e 
composição
Reflow e relayout
10 mandamentos
1. Não mexa no DOM 
2. Minimize áreas de reflow 
3. Guarde referências para elementos do DOM 
em variáveis locais 
4. Agrupe mudanças de estilo 
(de preferência apenas modificando classe) 
5. Evite pegar info de layout 
(posicionamento, dimensão e espaçamento) 
6. Quanto menos elementos melhor 
7. Quanto menos CSS melhor 
8. Cuidado com eventos complexos 
9. Anime elementos position absolute ou fixed 
10.Não mexa no DOM
Obrigado! 
www.nextt.com.br 
filipi@nextt.com.br 
@filipiz 
+55 48 3028.9556 
Avenida Desembargador Vítor Lima, 260, 
Trindade, Florianópolis, SC

Weitere ähnliche Inhalte

Andere mochten auch

WINTA Lucerne October 2012
WINTA Lucerne October 2012WINTA Lucerne October 2012
WINTA Lucerne October 2012Anna Pollock
 
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013Anna Pollock
 
OSCON 2010 - Cloud Standards Debate
OSCON 2010 - Cloud Standards DebateOSCON 2010 - Cloud Standards Debate
OSCON 2010 - Cloud Standards DebateBenjamin Black
 
PPPM PENDIDIKAN ISLAM TAHUN 2
PPPM PENDIDIKAN ISLAM TAHUN 2PPPM PENDIDIKAN ISLAM TAHUN 2
PPPM PENDIDIKAN ISLAM TAHUN 2Safiah Sulaiman
 
Technology transfer the secret engine behind israeli success
Technology transfer the secret engine behind israeli successTechnology transfer the secret engine behind israeli success
Technology transfer the secret engine behind israeli successinnovation_workshop
 
Bengkel kssr tahun 2 pi
Bengkel kssr tahun 2 piBengkel kssr tahun 2 pi
Bengkel kssr tahun 2 piNorul Huda
 
The Climate Change Challenge: Implications for Tourism
The Climate Change Challenge: Implications for TourismThe Climate Change Challenge: Implications for Tourism
The Climate Change Challenge: Implications for TourismAnna Pollock
 
Crafting Our Future (Fabricando Nuestro Futuro)
Crafting Our Future (Fabricando Nuestro Futuro)Crafting Our Future (Fabricando Nuestro Futuro)
Crafting Our Future (Fabricando Nuestro Futuro)ron mader
 
Responsible Travel Week, February 13-19 #rtweek17
Responsible Travel Week, February 13-19 #rtweek17Responsible Travel Week, February 13-19 #rtweek17
Responsible Travel Week, February 13-19 #rtweek17ron mader
 
Emergence mobile enterprise forum 2014 - Kevin Spain keynote
Emergence mobile enterprise forum 2014 - Kevin Spain keynoteEmergence mobile enterprise forum 2014 - Kevin Spain keynote
Emergence mobile enterprise forum 2014 - Kevin Spain keynoteEmergence Capital
 

Andere mochten auch (10)

WINTA Lucerne October 2012
WINTA Lucerne October 2012WINTA Lucerne October 2012
WINTA Lucerne October 2012
 
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013
Anna Pollock Presentation to Adventure Travel World Summit, Namibia, 2013
 
OSCON 2010 - Cloud Standards Debate
OSCON 2010 - Cloud Standards DebateOSCON 2010 - Cloud Standards Debate
OSCON 2010 - Cloud Standards Debate
 
PPPM PENDIDIKAN ISLAM TAHUN 2
PPPM PENDIDIKAN ISLAM TAHUN 2PPPM PENDIDIKAN ISLAM TAHUN 2
PPPM PENDIDIKAN ISLAM TAHUN 2
 
Technology transfer the secret engine behind israeli success
Technology transfer the secret engine behind israeli successTechnology transfer the secret engine behind israeli success
Technology transfer the secret engine behind israeli success
 
Bengkel kssr tahun 2 pi
Bengkel kssr tahun 2 piBengkel kssr tahun 2 pi
Bengkel kssr tahun 2 pi
 
The Climate Change Challenge: Implications for Tourism
The Climate Change Challenge: Implications for TourismThe Climate Change Challenge: Implications for Tourism
The Climate Change Challenge: Implications for Tourism
 
Crafting Our Future (Fabricando Nuestro Futuro)
Crafting Our Future (Fabricando Nuestro Futuro)Crafting Our Future (Fabricando Nuestro Futuro)
Crafting Our Future (Fabricando Nuestro Futuro)
 
Responsible Travel Week, February 13-19 #rtweek17
Responsible Travel Week, February 13-19 #rtweek17Responsible Travel Week, February 13-19 #rtweek17
Responsible Travel Week, February 13-19 #rtweek17
 
Emergence mobile enterprise forum 2014 - Kevin Spain keynote
Emergence mobile enterprise forum 2014 - Kevin Spain keynoteEmergence mobile enterprise forum 2014 - Kevin Spain keynote
Emergence mobile enterprise forum 2014 - Kevin Spain keynote
 

Ähnlich wie Como os navegadores funcionam: renderização, layout e desempenho

Repaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página webRepaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página webtdc-globalcode
 
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDiego Eis
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Altair Borges
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoFreedom DayMS
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoVinicius Rocha
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.ioOnyo
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Introdução a desenvolvimento web
Introdução a desenvolvimento webIntrodução a desenvolvimento web
Introdução a desenvolvimento webIago Effting
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos formsMoacir Filho
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLWillian Magalhães
 
Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06Luiz Duarte
 
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Cristofer Sousa
 

Ähnlich wie Como os navegadores funcionam: renderização, layout e desempenho (20)

Repaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página webRepaint/Reflow/Dom/RenderTree - Renderizando uma página web
Repaint/Reflow/Dom/RenderTree - Renderizando uma página web
 
Apache Wicket
Apache WicketApache Wicket
Apache Wicket
 
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render PathDOM, CSSOM e RenderThree - Introdução ao Browser Render Path
DOM, CSSOM e RenderThree - Introdução ao Browser Render Path
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
 
Programação Web com HTML e CSS
Programação Web com HTML e CSSProgramação Web com HTML e CSS
Programação Web com HTML e CSS
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini Curso
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Introdução a desenvolvimento web
Introdução a desenvolvimento webIntrodução a desenvolvimento web
Introdução a desenvolvimento web
 
Django + extjs pelos forms
Django + extjs pelos formsDjango + extjs pelos forms
Django + extjs pelos forms
 
Curso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTMLCurso Desenvolvimento WEB com PHP - HTML
Curso Desenvolvimento WEB com PHP - HTML
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06Curso de Node.js e MongoDB - 06
Curso de Node.js e MongoDB - 06
 
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
 

Como os navegadores funcionam: renderização, layout e desempenho