Slide 1

Slide 1 text

LAZY LOADING IMAGES WITH THE INTERSECTION OBSERVER SLC Front end DEV

Slide 2

Slide 2 text

I ❤ • OPEN SOURCE @AMPHTML • INSTRUCTOR @UDEMY • ENGINEERING @IMPARTNERPRM • !" @juanlizarazog HI! I AM JUAN LIZARAZO

Slide 3

Slide 3 text

@juanlizarazog AMPPROJECT.ORG BUILDING THE FUTURE WEB, TOGETHER. THE AMP PROJECT

Slide 4

Slide 4 text

@juanlizarazog What’s lazy loading?

Slide 5

Slide 5 text

@juanlizarazog Bounce rate

Slide 6

Slide 6 text

@juanlizarazog

Slide 7

Slide 7 text

PERFORMANCE MATTERS! @juanlizarazog

Slide 8

Slide 8 text

LAZY LOADING RESOURCES MATTER! @juanlizarazog

Slide 9

Slide 9 text

@juanlizarazog Our Goal Complete first meaningful render under 1 second

Slide 10

Slide 10 text

Image Lazy loading @juanlizarazog

Slide 11

Slide 11 text

@juanlizarazog No. 1 Element.getClientBoundingRect()

Slide 12

Slide 12 text

@juanlizarazog const domRect = element.getBoundingClientRect(); { "x": 418.4375, "y": 172, "width": 923.328125, "height": 44, "top": 172, "right": 1341.765625, "bottom": 216, "left": 418.4375 }

Slide 13

Slide 13 text

@juanlizarazog DOMRect is just a rectangle

Slide 14

Slide 14 text

@juanlizarazog element.getBoundingClientRect(); 1. element.getClientRects(); 2. Returns a DOMRectList 3. Returns the union of these rectangles which is the DOMRect returned by element.getBoundingClientRect(); * Amount of scrolling matters

Slide 15

Slide 15 text

@juanlizarazog VIEW PORT

Slide 16

Slide 16 text

@juanlizarazog Let’s see it

Slide 17

Slide 17 text

@juanlizarazog No. 2 new IntersectionObserver(callback, options);

Slide 18

Slide 18 text

@juanlizarazog IntersectionObservers let you know when an observed element enters or exits the browser’s viewport.

Slide 19

Slide 19 text

@juanlizarazog const options = { root: null, rootMargin: '0px', threshold: 0 } const observer = new IntersectionObserver( callback, options );

Slide 20

Slide 20 text

@juanlizarazog That’s it, so let’s see it

Slide 21

Slide 21 text

@juanlizarazog Love your users ❤

Slide 22

Slide 22 text

@juanlizarazog Thank you! Source code: https://github.com/juanlizarazo/image-lazy-load-demos Slides: https://speakerdeck.com/juanlizarazo/lazy-loading-images-with-the-intersection-observer