+ All Categories
Home > Technology > Go With The Reflow

Go With The Reflow

Date post: 17-May-2015
Category:
Upload: lsimon
View: 5,235 times
Download: 3 times
Share this document with a friend
Description:
This is a talk from Velocity 2009. http://en.oreilly.com/velocity2009/public/schedule/detail/9340
Popular Tags:
16
Go With the Reflow Experiments testing browser rendering Lindsey Simon Front-End Developer, Google June 23, Velocity 2009 4:45 – 5:05pm Regency 2
Transcript
Page 1: Go With The Reflow

Go With the ReflowExperiments testing browser rendering

Lindsey SimonFront-End Developer, Google

June 23, Velocity 20094:45 – 5:05pm Regency 2

Page 2: Go With The Reflow

What is Reflow?

CSS Selector Matching + Reflow Calc. + Repaint =

Page 3: Go With The Reflow

What is Reflow?

Everything on a page is a box.

Page 4: Go With The Reflow

What is Reflow?

“Reflow is the process by which the geometry of the layout engine's formatting objects are computed.” Chris Waterson, http://www.mozilla.org/newlayout/doc/reflow.html

And that matters because?

“Reflows are very expensive in terms of performance, and is one of the main causes of slow DOM scripts, especially on devices with low processing power, such as phones. In many cases, they are equivalent to laying out the entire page again.”

Mark 'Tarquin' Wilton-Jones, http://dev.opera.com/articles/view/efficient-javascript

Page 5: Go With The Reflow

What is Reflow?

Satoshi Ueyama's tweaked-Firefox3.1 reflow video

http://www.youtube.com/watch?v=AKZ2fj8155I

http://blog.mozilla.com/gen/2009/04/09/how-to-make-your-own-gecko-reflow-video/

Page 6: Go With The Reflow

What Can Cause a Reflow?

User resizes the browser window

Setting properties on element.styledisplay, padding, margin, font, position, top, left, etc..

Changes to the live DOM treeappendChild, innerHTML, etc..

Requesting element.offsetHeight or offsetWidth

The box model

Page 7: Go With The Reflow

What Can Make Reflow Slow?

Total number of elements

Depth of the DOM treeA deep reflow may cause reflow in ancestors, siblings, etc...

Number of CSS rules (selector matching)

CSS rule efficiency (selector matching)

Type of changedisplay:block vs. visibility:hidden for instance

Your (user's) browser choice ;)

Page 8: Go With The Reflow

Testing

How do you trigger and time a full-page reflow?

Is there a consistent way cross-browser short of video?

Can you crowd-source this data?

and open-source the tests and test system?

→ demo

Page 9: Go With The Reflow

Testing

Test page: 400 elements, 1000 CSS rules, 2-10 nesting, Different CSS specificities

JS bookmarklet uses getOffsetHeight to flush the render queue

Page 10: Go With The Reflow

Reflow Testing

400 Elements, 1000 CSS Rules (#contents *)

Page 11: Go With The Reflow

Reflow Testing

#contents div #contents html #contents a #contents *

CSS Specificity Matters!

Page 12: Go With The Reflow

Reflow Testing

2X Difference in Triton prior to IE8Webkit is very flat = good

Page 13: Go With The Reflow

Reflow Testing

Is the 4X time for the four sides of the box model in IE6,7?

Page 14: Go With The Reflow

Reflow Testing

More To Come!

Divs vs TablesOverflow vs. Inline Block Grids“CSS is Awesome” Gotchas

Having fun yet?!

Page 15: Go With The Reflow

Speed Up Your Reflows

Take heavy DOM or Style changes out of the flow

Do DOM building/manipulation in document fragments

Do DOM building/manipulation with display:none

Perform dynamic presentations (animations, dialogs, etc..) in containers that are position:absolute,fixed or otherwise out of the normal document flow

Change element.className instead of element.style and avoid inline styles (can prevent multiple procedural reflow if a browser does not do style-change queueing)

Trade Smoothness for Speed (the Opera motto)

e.g. A browser resize listener that resizes at the end of the resize vs. a listener that tries to reflow onresize

Page 16: Go With The Reflow

Thanks

David Baron

Steve Souders

Stephen Lamm

Xin Fu & Miao Chen

Gregory Baker

Ben Galbraith

Dion Almaer

Nicole Sullivan

The VP of Keepin it Real


Recommended