responsive images are here. now what?

147
Responsive Images Are Here. Now What? Jason Grigsby • @grigs • cloudfour.com Photo by http://www.gratisography.com/

Upload: jason-grigsby

Post on 14-Apr-2017

458 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Responsive images are here. Now what?

Responsive Images Are Here.

Now What?

Jason Grigsby • @grigs • cloudfour.comPhoto by http://www.gratisography.com/

Page 2: Responsive images are here. Now what?

Responsive images have landed

Also sprach Zarathustra

Page 3: Responsive images are here. Now what?

Shipped Development

Page 4: Responsive images are here. Now what?

https://www.flickr.com/photos/gwendalcentrifugue/7395256948

Page 5: Responsive images are here. Now what?
Page 6: Responsive images are here. Now what?

<picture> <!-- 16:9 crop --> <source type="image/webp" media="(min-width: 36em)" srcset="quilt_2/detail/large.webp 1920w, quilt_2/detail/medium.webp 960w, quilt_2/detail/small.webp 480w" /> <source media="(min-width: 36em)" srcset="quilt_2/detail/large.jpg 1920w, quilt_2/detail/medium.jpg 960w, quilt_2/detail/small.jpg 480w" /> <!-- square crop -->

Page 7: Responsive images are here. Now what?

type="image/webp" srcset="quilt_2/square/large.webp 822w, quilt_2/square/medium.webp 640w, quilt_2/square/small.webp 320w" /> <source srcset="quilt_2/square/large.jpg 822w, quilt_2/square/medium.jpg 640w, quilt_2/square/small.jpg 320w" /> <img src="quilt_2/detail/medium.jpg" alt="Detail of the above quilt, highlighting the embroidery and exotic stitchwork." /> </picture>

Page 8: Responsive images are here. Now what?

”This is way too complex and heavy markup language. Can you imagine yourselves doing that in 300 images in

a web site? This will be a nightmare to manage.”

”There are so many things wrong with these new responsive image systems.”

Page 9: Responsive images are here. Now what?

”Long story short, I don't think anyone should use images on the web.”

https://www.flickr.com/photos/zeldman/7727532846

Page 10: Responsive images are here. Now what?

”Long story short, I don't think anyone should use images on the web.”

https://www.flickr.com/photos/zeldman/7727532846

Page 11: Responsive images are here. Now what?

https://www.flickr.com/photos/zeldman/7727532846

Page 12: Responsive images are here. Now what?
Page 13: Responsive images are here. Now what?

background-image: -webkit-linear-gradient( 45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient( 45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%,

Page 14: Responsive images are here. Now what?

rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);

And that’s why no one uses gradients…

Page 15: Responsive images are here. Now what?

Images have always been difficult.

Page 16: Responsive images are here. Now what?

216 Web Safe Colors

http://moodlightinghire.com/wp-content/uploads/2013/06/RGB_color_chart_by_ervis.jpg

Page 17: Responsive images are here. Now what?

1996

258 pages

1997

447 pages

1996

235 pages

1997

238 pages

1997

235 pages

Page 18: Responsive images are here. Now what?

PNG compression

1,498 bytes 1,980 bytes 12,850 bytes

Page 19: Responsive images are here. Now what?

https://www.flickr.com/photos/jannem/3312115991

Page 20: Responsive images are here. Now what?

Use Cases

https://www.flickr.com/photos/cgb_bbear/3082932860

Page 21: Responsive images are here. Now what?

https://www.flickr.com/photos/whitehouse/8491445521

Resolution Switching Includes high-density (retina) images.

Page 22: Responsive images are here. Now what?

Art direction

http://www.flickr.com/photos/barackobamadotcom/5795228030/

Page 23: Responsive images are here. Now what?

http://www.flickr.com/photos/barackobamadotcom/5795228030/

Art direction

Page 24: Responsive images are here. Now what?

http://www.flickr.com/photos/barackobamadotcom/5795228030/

Art direction

Page 25: Responsive images are here. Now what?

http://www.flickr.com/photos/barackobamadotcom/5795228030/

Art direction

Page 26: Responsive images are here. Now what?

http://www.flickr.com/photos/barackobamadotcom/5795228030/

Art direction

Page 27: Responsive images are here. Now what?

Not simply cropping

Page 28: Responsive images are here. Now what?

Art direction: Images with text

Page 29: Responsive images are here. Now what?

Art direction: Images with text

Page 30: Responsive images are here. Now what?

Art direction: Images with text

Page 31: Responsive images are here. Now what?

https://www.flickr.com/photos/lonelycoo/4393663498

Page 32: Responsive images are here. Now what?

<img>is always required

Page 33: Responsive images are here. Now what?

<img>Icon made by Daniel Bruce from www.flaticon.com is licensed under CC BY 3.0

<picture> <source>

srcset media

sizes type

Page 34: Responsive images are here. Now what?

<picture> <source media="(min-width: 650px)" srcset="kitten-large.png"> <source media="(min-width: 465px)" srcset="kitten-medium.png"> <img src="kitten-small.png" alt="a cute kitten"> </picture>

All rules are applied to <img> element

Original Chrome Team Example: http://googlechrome.github.io/samples/picture-element/

Page 35: Responsive images are here. Now what?

<img>do you need anything else?

Page 36: Responsive images are here. Now what?

Fixed width, single density

<img> is all you need.

Page 37: Responsive images are here. Now what?
Page 38: Responsive images are here. Now what?
Page 39: Responsive images are here. Now what?
Page 40: Responsive images are here. Now what?

Small difference in file size or using SVG?

<img> is all you need.

Page 41: Responsive images are here. Now what?

High density displays?

Page 42: Responsive images are here. Now what?

srcset

Page 43: Responsive images are here. Now what?

display density

comma-separated list

<img src="cat.jpg" alt="cat" srcset="cat.jpg, cat-2X.jpg 2x">

Page 44: Responsive images are here. Now what?

Easy so far, right?

Page 45: Responsive images are here. Now what?
Page 46: Responsive images are here. Now what?

1849 × 749 – 256K

2x = 3698 × 1498 – 508K

Page 47: Responsive images are here. Now what?

We need more source files.

Page 48: Responsive images are here. Now what?

width of the image sources

Browser picks best source

<img src="cat.jpg" alt="cat" srcset="cat-160.jpg 160w, cat-320.jpg 320w, cat-640.jpg 640w, cat-1280.jpg 1280w">

Page 49: Responsive images are here. Now what?

Browser picks best source

HOW?https://www.flickr.com/photos/ores2k/394359583

Page 50: Responsive images are here. Now what?

Image requested

HTML requested

CSS and JS requestedHTML parsing starts

Image requested

Image requested

Image requested

Page 51: Responsive images are here. Now what?

CSS evaluation beginning

Page 52: Responsive images are here. Now what?

CSS evaluation beginning

Images are downloaded before size is knownThe only thing the lookahead pre-parser knows is the size of the viewport.

Page 53: Responsive images are here. Now what?

<img src="cat.jpg" alt="cat" srcset="cat-160.jpg 160w, cat-320.jpg 320w, cat-640.jpg 640w, cat-1280.jpg 1280w">

Page 54: Responsive images are here. Now what?

Images are nearly same size as viewport

Page 55: Responsive images are here. Now what?

1540px

254px

Viewport Tells Us

Little

Page 56: Responsive images are here. Now what?

Tug of war between responsive images and the lookahead pre-parser.

Page 57: Responsive images are here. Now what?

https://www.flickr.com/photos/davechiu/24165369 https://www.flickr.com/photos/ostrosky/4149725733

Page 58: Responsive images are here. Now what?

https://www.flickr.com/photos/davechiu/24165369 https://www.flickr.com/photos/ostrosky/4149725733

Lookahead pre-parser

Know everything in advance. Start downloading immediately.

Responsive images

Wait until last minute. Know size of image after CSS / JS.

Page 59: Responsive images are here. Now what?

The pre-parser is why we can’t solve responsive images with CSS, JS or a magical new image format.

https://www.flickr.com/photos/hamur0w0/6984884135

Page 60: Responsive images are here. Now what?

Lookahead Pre-parser Key to a Faster Web

20% 19%http://andydavies.me/blog/2013/10/22/how-the-browser-pre-loader-makes-pages-load-faster/

Page 61: Responsive images are here. Now what?

~43% of image fetches are initiated by the speculative HTML scanner, which account for ~50% of transferred bytes.

—Ilya Grigorik

”http://bigqueri.es/t/who-initiates-image-downloads/568

Page 62: Responsive images are here. Now what?

sizes

https://www.flickr.com/photos/ashleyrosex/2861690380

Page 63: Responsive images are here. Now what?

<img src="cat.jpg" alt="cat" srcset="cat-160.jpg 160w, cat-320.jpg 320w, cat-640.jpg 640w, cat-1280.jpg 1280w" sizes=“max-width(480px) 100vw, max-width(900px) 33vw, 171px”>

sizes="(max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px"

sizes is required

whenever srcset uses

width descriptors

Page 64: Responsive images are here. Now what?

media condition (subset of media queries)length

viewport width unit

if there is no media condition,

then it is the default length

length can be absolute, relative or even calc()

sizes="(max-width: 480px) 100vw,

(max-width: 900px) 33vw,

254px"

Page 65: Responsive images are here. Now what?

sizes=" (max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px"

Page 66: Responsive images are here. Now what?

sizes=" (max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px"

Page 67: Responsive images are here. Now what?

sizes=" (max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px"

Page 68: Responsive images are here. Now what?

What about separation of content from style?

Page 69: Responsive images are here. Now what?

Sizes is a necessary compromise: responsive images and speculative downloading

Page 70: Responsive images are here. Now what?

srcset and sizes

let browsers be smarthttps://www.flickr.com/photos/alicejamieson/3164148439

Page 71: Responsive images are here. Now what?

<picture?>

Page 72: Responsive images are here. Now what?

Art Direction

http://www.gratisography.com/

Page 73: Responsive images are here. Now what?

<picture>

<source media="(min-width: 900px)"

srcset="cat-vertical.jpg">

<source media="(min-width: 750px)"

srcset="cat-horizontal.jpg">

<img src="cat.jpg" alt="cat">

</picture>

media query

full srcset

multiple

<source>s

<img> required

Page 74: Responsive images are here. Now what?

Shopify using <picture> for art direction

Page 75: Responsive images are here. Now what?

Shopify using <picture> for art direction<picture> <source srcset="[email protected], [email protected] 2x" media="(min-width: 990px)"> <source srcset="[email protected], [email protected] 2x" media="(min-width: 750px)"> <img srcset="[email protected], [email protected] 2x" alt="Shopify Merchant, Corrine Anestopoulos"> </picture>

Simplified markup

Page 76: Responsive images are here. Now what?

another use for <picture>https://www.flickr.com/photos/delete08/4869608487

Page 77: Responsive images are here. Now what?

declare different types of images

unless art direction, you

don’t need media attribute

<picture>

<source type="image/svg+xml" srcset="logo.xml">

<source type="image/webp" srcset="logo.webp">

<img src="logo.png" alt="ACME Corp">

</picture>

Page 78: Responsive images are here. Now what?

New image formats present new possibilities

JPEG 2000 handles alpha channel images wellhttp://www.useragentman.com/blog/2015/01/14/using-webp-jpeg2000-jpegxr-apng-now-with-picturefill-and-modernizr/

Page 79: Responsive images are here. Now what?

JPEG 2000 19.2K

JPEG-XR 95.7K

PNG 325.7K

Web-P 56K

Alpha Channel Dice Image

http://www.useragentman.com/blog/2015/01/14/using-webp-jpeg2000-jpegxr-apng-now-with-picturefill-and-modernizr/

Page 80: Responsive images are here. Now what?

http://www.gratisography.com/

Page 81: Responsive images are here. Now what?

inline image tricks

https://www.flickr.com/photos/sk8mama/238533452

Page 82: Responsive images are here. Now what?

inline image tricks

https://www.flickr.com/photos/sk8mama/238533452

Page 83: Responsive images are here. Now what?

What about CSS?

https://www.flickr.com/photos/mauriz/4059476052

Page 84: Responsive images are here. Now what?

http://www.gratisography.com/ https://www.flickr.com/photos/shaheershahid/3635625771

Page 85: Responsive images are here. Now what?

http://www.gratisography.com/ https://www.flickr.com/photos/shaheershahid/3635625771

Art Direction

Resolution Switching

Page 86: Responsive images are here. Now what?

Resolution Switching

Page 87: Responsive images are here. Now what?

image-set()

Page 88: Responsive images are here. Now what?

works for any CSS that takes

images (e.g., border-image) display density =>

precursor to srcset, similar syntax

does not, yet, support declaring image widths

background-image: image-set( "foo.png" 1x,

"foo-2x.png" 2x);

Page 89: Responsive images are here. Now what?
Page 90: Responsive images are here. Now what?

Art Direction

http://www.gratisography.com/

Page 91: Responsive images are here. Now what?

media queries!

Page 92: Responsive images are here. Now what?

old style, webkit only

resolution media query, max-resolution also valid dots per inch (dpi),

dots per centimeter (dpcm) or dots per px unit (dppx)

Due to the 1:96 fixed ratio of CSS in to CSS px, 1dppx is equivalent to 96dpi

https://developer.mozilla.org/en-US/docs/Web/CSS/resolution

@media (-webkit-min-device-pixel-ratio: 2),

(min-resolution: 192dpi) {

/* High density stuff here */

}

Page 93: Responsive images are here. Now what?

image breakpoints

Page 94: Responsive images are here. Now what?

http://www.gratisography.com/

Art direction may dictate image breakpoints

Page 95: Responsive images are here. Now what?

https://www.flickr.com/photos/photosdavidgabrielfischer/15706338457

Image breakpoints for resolution switching.

Page 96: Responsive images are here. Now what?

For responsive design breakpoints, resize the browser until the page looks bad then…

BOOM!you need a breakpoint.

Page 97: Responsive images are here. Now what?

2000 x 3010 761K

200 x 301 15K

How many image breakpoints?

Page 98: Responsive images are here. Now what?

2000 x 3010 761K

200 x 301 15K Scaled down images don’t look bad.

Page 99: Responsive images are here. Now what?

2000 x 3010 250K

400 x 602 Actual size in page

800 x 1204 73K

Page 100: Responsive images are here. Now what?

2000 x 3010 250K

400 x 602 Actual size in page

800 x 1204 73K

600 x 903 42K

Page 101: Responsive images are here. Now what?

400 x 602 Actual size in page

800 x 1204 73K

600 x 903 42K

500 x 753 31K

450 x 678 27K

Page 102: Responsive images are here. Now what?

400 x 602 Actual size in page

Page 103: Responsive images are here. Now what?

400 x 602 Actual size in page

Is the only intrinsic information we have about image size.

Page 104: Responsive images are here. Now what?

In the responsive layouts I’ve worked on, content image sizes and their

breakpoints were chosen for completely different reasons than the

design (CSS) breakpoints: the former for sensible jumps in file size to

match screen dimension and/or density, and the latter for how content

modules are visibly designed at given viewport dimensions.

—Scott Jehl, Filament Group http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0613.html

Page 105: Responsive images are here. Now what?

What is a sensible jump in file size?

Page 106: Responsive images are here. Now what?

Images compress differentlyBoth images are 960x660 pixels

151K, JPEG 13K PNG

Page 107: Responsive images are here. Now what?

Responsive Images Performance Budget

Page 108: Responsive images are here. Now what?

Source image: 500x333 58K

What is the cost of flexible images?

Page 109: Responsive images are here. Now what?

Source image: 500x333 58K

What is the cost of flexible images?

Size in page: 300x200 24K

Making this image flexible

costs 34K.

Page 110: Responsive images are here. Now what?

What if we set a performance budget of 20K per image for flexible images?

Page 111: Responsive images are here. Now what?

Width Height File Size

320 213 25K

453 302 44K

579 386 65K

687 458 85K

786 524 104K

885 590 124K

975 650 142K

990 660 151K

8 image breakpoints

https://www.flickr.com/photos/lyza/6733380533

Page 112: Responsive images are here. Now what?

Width Height File Size

320 213 9K

731 487 29K

990 660 40K

3 image breakpoints

https://www.flickr.com/photos/lyza/6210160407

Page 113: Responsive images are here. Now what?

7 image breakpoints

Width Height File Size

320 213 24K

471 314 43K

612 408 64K

728 485 84K

840 560 103K

944 629 122K

990 660 131K

https://www.flickr.com/photos/lyza/6167714218

Page 114: Responsive images are here. Now what?

Width Height File Size

990 660 13K

1 image breakpoint

Page 115: Responsive images are here. Now what?

Pick representative

images and test how

many breakpoints

you’ll need.

Image breakpoints are not a science yet.

https://www.flickr.com/photos/ecstaticist/5465673165

Page 116: Responsive images are here. Now what?

Humans shouldn’t be doing this work.

https://www.flickr.com/photos/jdhancock/7801182534/

Page 117: Responsive images are here. Now what?

https://www.flickr.com/photos/lendingmemo/11747440176

Page 118: Responsive images are here. Now what?

Questions to ask about imagesWhere are the source files and what is the process for publishing?

Is there a big difference between smallest and largest image size?

Resolution switching or art direction?

Can we use SVG?

Are there representative images we can use to find sensible jumps in file sizes for our image breakpoints?

Do we want to support multiple image formats?

Page 119: Responsive images are here. Now what?

Real life example: hero images

Page 120: Responsive images are here. Now what?

Hero images are usually large

promo images

Page 121: Responsive images are here. Now what?

Full requirements for a hero image:

Page 122: Responsive images are here. Now what?

Full requirements for a hero image:

A box for marketing.

Page 123: Responsive images are here. Now what?

In an ideal world, you build HTML5 hero images…

Page 124: Responsive images are here. Now what?

Instead, maybe all

hero images consist of HTML text

placed on an image.

Page 125: Responsive images are here. Now what?

And every image you

use has spots set aside just for your text.

Page 126: Responsive images are here. Now what?

But that may not be

practical for your site.

Page 127: Responsive images are here. Now what?

Maybe just give them a box?

Image breakpoints FTL

Page 128: Responsive images are here. Now what?
Page 129: Responsive images are here. Now what?
Page 130: Responsive images are here. Now what?

Image Breakpoints

Name Width Height Max Width Min Width

Large 1080 360 n/a 781

Medium 780 320 780 541

Small 540 270 540 n/a

Text readability dictated 3 image breakpoints

Need to support 16 pt in this font? Requires 4 breakpoints.

Page 131: Responsive images are here. Now what?

This worked for one project. Your project will likely be different.

Page 132: Responsive images are here. Now what?

But surveying your images will help you figure it out.

https://www.flickr.com/photos/nate2009/13971372001

Page 133: Responsive images are here. Now what?

Image Description Format Size Markup Notes

Property logosPNG8

(future SVG)Regular, Retina

<img>Little variance between the wide and

small screen image sizes.

Partner logosPNG8

(future SVG)Regular, Retina

<img>Little variance between the wide and

small screen image sizes.

Iconography SVG — <img> —

Brand logosPNG8

(future SVG)regular, Retina

<img>Assumes little variance between the wide and small screen image sizes.

Property photographyJPG

(conditional WebP)Dynamically resized and

compressedsrcset and sizes Templates specify breakpoints.

Promo images w/ text (art direction)

Whichever is appropriate As many sizes as needed. <picture>Content producer defines images

and breakpoints in CMS.

Example of images audit for a large site

Page 134: Responsive images are here. Now what?

Big Hope: Automation

https://www.flickr.com/photos/clement127/15631803492

Page 135: Responsive images are here. Now what?

http://scottjehl.github.io/picturefill/

Picturefill is the polyfill.

Page 136: Responsive images are here. Now what?

https://www.drupal.org/project/picture

Drupal Picture Module

Page 137: Responsive images are here. Now what?

https://wordpress.org/plugins/ricg-responsive-images/

Wordpress Responsive

Images Plugin

Page 138: Responsive images are here. Now what?

Image resizing services

http://bit.ly/image-services

Page 139: Responsive images are here. Now what?

https://www.flickr.com/photos/mariachily/5250487136

Responsive images can seem daunting…

Page 140: Responsive images are here. Now what?

https://www.flickr.com/photos/zeldman/14847023657

And you may feel like giving up…

Page 141: Responsive images are here. Now what?

Remember, you’re not alone…

https://www.flickr.com/photos/max-design/3751402935

Page 142: Responsive images are here. Now what?
Page 143: Responsive images are here. Now what?

We will build tools to make the climb easier…

Page 144: Responsive images are here. Now what?

We merely need to take the first steps.

https://www.flickr.com/photos/akras/1477140536

Page 145: Responsive images are here. Now what?

https://flickr.com/photos/ekosystem/4334671818

Page 146: Responsive images are here. Now what?

http://www.gratisography.com/

Page 147: Responsive images are here. Now what?

http://www.gratisography.com/

Special thanks to Simon Pieters, Mat Marquis, Eric Portis, Yoav Weiss, and the rest of the RICG.

Shout out to all of the amazing photographers who share their work under creative commons. You rule!