Slide 1

Slide 1 text

Optimizing Your Themes For Responsive Images In WordPress Joe McGill @joemcgill

Slide 2

Slide 2 text

An overview of responsive 
 image use cases • Display size (resolution/viewport) • Device density (retina devices) • Art direction More at: usecases.responsiveimages.org

Slide 3

Slide 3 text

Display Size resolution differences viewport layout changes

Slide 4

Slide 4 text

2x 1x Display Density

Slide 5

Slide 5 text

Art Direction

Slide 6

Slide 6 text

the image element …

Slide 7

Slide 7 text

Responsive Image HTML • srcset (x descriptors) • srcset (w descriptors) + sizes • The element

Slide 8

Slide 8 text

srcset + x descriptors …

Slide 9

Slide 9 text

srcset + w descriptors … NOTE: The browser doesn’t know the display size of the 
 image, so it assumes 100% of the viewport width.

Slide 10

Slide 10 text

srcset + sizes …

Slide 11

Slide 11 text

…

Slide 12

Slide 12 text

WordPress ❤ ’s srcset + sizes • WordPress automatically creates extra sizes when you upload an image (e.g., thumbnail, medium, large, etc.) • Add your own custom sizes with add_image_size() • WP includes same ratio image sizes in srcset

Slide 13

Slide 13 text

add_image_size() // Soft resize add_image_size( 'custom-size', 220, 180 ); // Hard crop add_image_size( 'custom-size', 220, 180, true );

Slide 14

Slide 14 text

The Sizes Dilemma • The sizes attribute tells the browser about the layout of the image. • The image layout is dependent on your theme’s CSS rules.

Slide 15

Slide 15 text

A smart default … sizes="(max-width: 600px) 100vw, 600px"

Slide 16

Slide 16 text

Customizing the sizes attribute add_filter( 'wp_calculate_image_sizes', 'my_sizes_filter' ); function my_sizes_filter() { return '(max-width: 37em) 85vw, (max-width: 45em) 67vw, 840px'; } WP.org code reference

Slide 17

Slide 17 text

Customizing the sizes attribute add_filter( 'wp_calculate_image_sizes', 'my_sizes_filter', 10, 2 ); function my_sizes_filter( $sizes, $size ) { if ( 'medium' === $size ) { $sizes = '(max-width: 37em) 85vw, (max-width: 45em) 67vw, 840px'; } return $sizes; }

Slide 18

Slide 18 text

Calculating the sizes attribute • Start your browser at a small width and write down image widths at each breakpoint. • Tip: use calc() to combine relative and fixed size calculations.

Slide 19

Slide 19 text

THANK YOU Joe McGill @joemcgill • joemcgill.net