Tudo que você precisa saber sobre picture e srcset

80
<picture> & srcset TUDO QUE VOCÊ PRECISA SABER SOBRE

Transcript of Tudo que você precisa saber sobre picture e srcset

Page 1: Tudo que você precisa saber sobre picture e srcset

<picture> & srcsetTUDO QUE VOCÊ PRECISA SABER SOBRE

Page 2: Tudo que você precisa saber sobre picture e srcset

@sergio_caelum sergiolopes.org

Page 3: Tudo que você precisa saber sobre picture e srcset

IMAGENS NA WEB

Page 4: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

<img src="frutas.jpg" alt="Banca de Frutas">

background-image: url(frutas.jpg);

Page 5: Tudo que você precisa saber sobre picture e srcset

TELAS ALTA RESOLUÇÃO

Page 6: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

320px 640px

1x 2x

Page 7: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

1x 2x

Page 8: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

.foto { background-image: url('balao_320px.jpg');width: 320px;

}

@media (resolution: 2dppx) {.foto {

background-image: url('balao_640px.jpg');}

}

Page 9: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

<img src="balao_320px.jpg" alt="Balões turcos">

Page 10: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

<img src="baloes.jpg" alt="Balões turcos" srcset="balao_320px.jpg 1x, balao_640px.jpg 2x">

Page 11: Tudo que você precisa saber sobre picture e srcset

http://upload.wikimedia.org/wikipedia/commons/d/d2/IPhone_4S_No_shadow.png http://upload.wikimedia.org/wikipedia/

commons/d/d2/IPhone_4S_No_shadow.png

1x

balao_320px.jpg

2x

balao_640px.jpg

Page 12: Tudo que você precisa saber sobre picture e srcset

SRCSET para densidades diferentes

<img src="baloes.jpg" alt="Balões turcos" srcset="balao_320px.jpg 1x, balao_640px.jpg 2x">

Lista imagens & densidades de tela

Imagem de fallback no src

Page 13: Tudo que você precisa saber sobre picture e srcset

IMAGENS RESPONSIVAS

Page 14: Tudo que você precisa saber sobre picture e srcset

IMAGENS

Page 15: Tudo que você precisa saber sobre picture e srcset

2560px

320px

Page 16: Tudo que você precisa saber sobre picture e srcset

ORIGINAL 4272px 6.4MB Q=80 4272px 1.5MB Q=60 4272px 960KB

Page 17: Tudo que você precisa saber sobre picture e srcset

4272px 1.5MB 2560px 627KB 1440px 230KB 720px 69KB 320px 17KB

7 ipT 16 ipT 44 ipT 145 ipT 589 ipT

Page 18: Tudo que você precisa saber sobre picture e srcset
Page 19: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

.foto { background-image: url('img_720px.jpg'); }

.foto { background-image: url('img_1440px.jpg'); }

.foto { background-image: url('img_2560px.jpg'); }

Page 20: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

@media (min-width: 361px) {

.foto { background-image: url('img_720px.jpg'); }}

@media (min-width: 721px) {

.foto { background-image: url('img_1440px.jpg'); }}

@media (min-width: 1441px) {

.foto { background-image: url('img_2560px.jpg'); } }

Page 21: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

@media (min-width: 361px), (min-resolution: 2dppx) {

.foto { background-image: url('img_720px.jpg'); }}

@media (min-width: 721px), (min-resolution: 2dppx) and (min-width: 361px) {

.foto { background-image: url('img_1440px.jpg'); }}

@media (min-width: 1441px), (min-resolution: 2dppx) and (min-width: 721px) {

.foto { background-image: url('img_2560px.jpg'); } }

Page 22: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

@media (min-width: 361px), (min-resolution: 2dppx) {

.foto { background-image: url('img_720px.jpg'); }}

@media (min-width: 721px), (min-resolution: 2dppx) and (min-width: 361px), (min-resolution: 3dppx) {

.foto { background-image: url('img_1440px.jpg'); }}

@media (min-width: 1441px), (min-resolution: 2dppx) and (min-width: 721px), (min-resolution: 3dppx) and (min-width: 481px) {

.foto { background-image: url('img_2560px.jpg'); } }

Page 23: Tudo que você precisa saber sobre picture e srcset

@media (min-width: 1600px) {.foto { width: 33%; }

}

.foto { width: 100%;} @media (min-width: 1024px) {.foto { width: 50%; }

}

Page 24: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

@media (min-width: 361px), (min-resolution: 2dppx) {

.foto { background-image: url('img_720px.jpg'); }}

@media (min-width: 721px) and (max-width: 1023px), (min-width: 1441px) and (max-width: 1599px), (min-width: 2160px), (min-resolution: 2dppx) and (min-width: 361px) {

.foto { background-image: url('img_1440px.jpg'); }}

@media (min-resolution: 2dppx) and (min-width: 721px) and (max-width: 1023px), (min-resolution: 2dppx) and (min-width: 1441px) and (max-width: 1599px), (min-resolution: 2dppx) and (min-width: 2160px) {

.foto { background-image: url('img_2560px.jpg'); }}

Page 25: Tudo que você precisa saber sobre picture e srcset

.foto { background-image: url('img_360px.jpg'); }

@media (min-width: 361px), (min-resolution: 2dppx) {

.foto { background-image: url('img_720px.jpg'); }}

@media (min-width: 721px) and (max-width: 1023px), (min-width: 1441px) and (max-width: 1599px), (min-width: 2160px), (min-resolution: 2dppx) and (min-width: 361px) {

.foto { background-image: url('img_1440px.jpg'); }}

@media (min-resolution: 2dppx) and (min-width: 721px) and (max-width: 1023px), (min-resolution: 2dppx) and (min-width: 1441px) and (max-width: 1599px), (min-resolution: 2dppx) and (min-width: 2160px) {

.foto { background-image: url('img_2560px.jpg'); }}

MEDIA QUERIES

SÃO COMPLICADAS

Page 26: Tudo que você precisa saber sobre picture e srcset

tamanho viewport

densidade da teladimensões do arquivo

tamanho img na pg

Page 27: Tudo que você precisa saber sobre picture e srcset

tamanho viewport

tamanho img na pg

densidade da tela

dimensões do arquivo

BROWSER DEV

✓ × ✓ ×

× ×

Page 28: Tudo que você precisa saber sobre picture e srcset

tamanho img na pg

densidade da tela

dimensões do arquivo

BROWSER DEV✓ × ✓

×

×

img_360.jpg img_720.jpg img_1440.jpgimg_2560.jpg

360px720px1440px2560px

100% 100vw

Page 29: Tudo que você precisa saber sobre picture e srcset

img_360.jpg img_720.jpg img_1440.jpgimg_2560.jpg

36072014402560

100vw

<img srcset="img_360.jpg 360w, img_720.jpg 720w, img_1440.jpg 1440w, img_2560.jpg 2560w" sizes="100vw">

Page 30: Tudo que você precisa saber sobre picture e srcset

✓ ×

tamanho aproximado na pg

lista imagens e tamanho dos arquivos

<img srcset="img_360.jpg 360w, img_720.jpg 720w, img_1440.jpg 1440w, img_2560.jpg 2560w" sizes="100vw">

Page 31: Tudo que você precisa saber sobre picture e srcset

Celular img_360.jpg

Celular Retina img_720.jpg

iPad Retina img_2560.jpg

Notebook comum img_1440.jpg

MacBook Retina img_2560.jpg

<img srcset="img_360.jpg 360w, img_720.jpg 720w, img_1440.jpg 1440w, img_2560.jpg 2560w" sizes="100vw">

Page 32: Tudo que você precisa saber sobre picture e srcset

@media (min-width: 1600px) {.foto { width: 33%; }

}

.foto { width: 100%;} @media (min-width: 1024px) {.foto { width: 50%; }

}

Page 33: Tudo que você precisa saber sobre picture e srcset

<img srcset="img_360.jpg 360w, img_720.jpg 720w, img_1440.jpg 1440w, img_2560.jpg 2560w"

sizes="(min-width: 1600px) 33vw, (min-width: 1024px) 50vw, 100vw">

lista breakpoints com tamanho da img na pg

Page 34: Tudo que você precisa saber sobre picture e srcset

<img src="fallback.jpg" alt="Foto da ponte"

srcset="img_360.jpg 360w, img_720.jpg 720w, img_1440.jpg 1440w, img_2560.jpg 2560w"

sizes="(min-width: 1600px) calc(33vw - 6em), (min-width: 1024px) 50vw, calc(100vw - 2em)">

Page 35: Tudo que você precisa saber sobre picture e srcset

SRCSET

Escolha imagem pra fallback no src

Só use para mesma imagem, tamanhos diferentes

Se usar w, use o sizes

É UMA DICA PARA O BROWSER

Page 36: Tudo que você precisa saber sobre picture e srcset

SRCSET

Blink

Firefox

<img srcset="img1.jpg 360w, img2.jpg 720w, img3.jpg 1440w">

img1.jpg

361px

img2.jpg

721px

img3.jpg

img1.jpg

510px

img2.jpg

1019px

img3.jpg

Page 37: Tudo que você precisa saber sobre picture e srcset

IMAGENS DIFERENTES

Page 38: Tudo que você precisa saber sobre picture e srcset
Page 39: Tudo que você precisa saber sobre picture e srcset
Page 40: Tudo que você precisa saber sobre picture e srcset
Page 41: Tudo que você precisa saber sobre picture e srcset

<picture> !!!!

Page 42: Tudo que você precisa saber sobre picture e srcset

<img src="recorte.jpg" alt="Meninos na jangada">

Page 43: Tudo que você precisa saber sobre picture e srcset

<picture>

<img src="recorte.jpg" alt="Meninos na jangada"></picture>

Page 44: Tudo que você precisa saber sobre picture e srcset

<picture><source media="(min-width: 1024px)"

srcset="completa.jpg">

<img src="recorte.jpg" alt="Meninos na jangada"></picture>

Page 45: Tudo que você precisa saber sobre picture e srcset

<picture><source media="(min-width: 1024px)"

srcset="intermediaria.jpg"><source media="(min-width: 1600px)"

srcset="completa.jpg"><img src="recorte.jpg" alt="Meninos na jangada">

</picture>

Page 46: Tudo que você precisa saber sobre picture e srcset

MUITAS IMAGENS

Page 47: Tudo que você precisa saber sobre picture e srcset

imagem full

recorte

2 colunas1 coluna

retina

responsivo

Page 48: Tudo que você precisa saber sobre picture e srcset

imagem fullrecorte 2 colunas

1 coluna retina

foto.jpgrecorte.jpg

<picture> <source>

100vw50vw

<img sizes>

responsivo

foto_800.jpg foto_1200.jpg foto_1600.jpg

recorte_320.jpg recorte_600.jpg recorte_1100.jpg

srcset

Page 49: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

Page 50: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<img src="recorte_600.jpg" alt="Meninos na jangada">

Page 51: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w”>

Page 52: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

Page 53: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<picture>

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 54: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<picture><source

srcset="foto_800.jpg 800w, foto_1200.jpg 1200w, foto_1600.jpg 1600w”>

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 55: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<picture><source media="(min-width: 800px)"

srcset="foto_800.jpg 800w, foto_1200.jpg 1200w, foto_1600.jpg 1600w”>

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 56: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<picture><source media="(min-width: 800px)"

srcset="foto_800.jpg 800w, foto_1200.jpg 1200w, foto_1600.jpg 1600w"sizes="100vw">

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 57: Tudo que você precisa saber sobre picture e srcset

foto.jpgrecorte.jpg<picture> <source>

100vw50vw

<img sizes>

foto_800.jpg foto_1200.jpg foto_1600.jpgrecorte_320.jpg recorte_600.jpg recorte_1100.jpgsrcset

<picture><source media="(min-width: 800px)"

srcset="foto_800.jpg 800w, foto_1200.jpg 1200w, foto_1600.jpg 1600w"sizes="(min-width: 1400px) 50vw, 100vw">

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 58: Tudo que você precisa saber sobre picture e srcset

<picture><source media="(min-width: 800px)"

srcset="foto_800.jpg 800w, foto_1200.jpg 1200w, foto_1600.jpg 1600w"sizes="(min-width: 1400px) 50vw, 100vw">

<img src="recorte_600.jpg" alt="Meninos na jangada" srcset="recorte_320.jpg 320w, recorte_600.jpg 600w, recorte_1100.jpg 1100w" sizes="100vw">

</picture>

Page 59: Tudo que você precisa saber sobre picture e srcset

SRCSET mesma imagem

<PICTURE> imagens diferentes

Page 60: Tudo que você precisa saber sobre picture e srcset

MAIS <PICTURE>

Page 61: Tudo que você precisa saber sobre picture e srcset

1980px x

1320px

JPEG Q=70 384KB WEBP Q=70 233KB -40%

Page 62: Tudo que você precisa saber sobre picture e srcset

<picture><source srcset="foto.webp" type="image/webp"><img src="foto.jpg" alt="Cidade">

</picture>

Page 63: Tudo que você precisa saber sobre picture e srcset

<picture><source srcset="foto.webp" type="image/webp"><source srcset="foto.jxr" type="image/jxr"><img src="foto.jpg" alt="Cidade">

</picture>

Page 64: Tudo que você precisa saber sobre picture e srcset

<picture><source srcset="logo.svg" type="image/svg+xml"><img src="logo.png" alt="Caelum">

</picture>

Page 65: Tudo que você precisa saber sobre picture e srcset

https://itaccessibility.illinois.edu/sites/itaccessibility.illinois.edu/files/chartcolor.jpg

Page 66: Tudo que você precisa saber sobre picture e srcset

<picture><source srcset="grafico_PB.png" media="(monochrome)"><img src="grafico.png" alt="Egg x Cheese">

</picture>

Page 67: Tudo que você precisa saber sobre picture e srcset

COLADensidade de tela (retina) <img srcset> com 1x/2x

Tamanhos & densidades diferentes <img srcset sizes> com w

Direção de arte <picture> + <source media="(min-width)">

Media queries (print, monochrome, color…) <picture> + <source media="print">

Formatos (mime type) <picture> + <source type="image/webp">

Tamanhos e densidade diferentes, com direção de arte, formatos diferentes e imagens pra impressão <picture> + srcset + sizes + <source media> + <source type> !!

Page 68: Tudo que você precisa saber sobre picture e srcset

PRÁTICA

Page 69: Tudo que você precisa saber sobre picture e srcset

AUTOMATIZEGeração das resoluções diferentes

Outros formatos (webp, jxr)

Cuspir código <picture> e srcset?

Page 70: Tudo que você precisa saber sobre picture e srcset

FALLBACK SEMPRE<img src>

Page 71: Tudo que você precisa saber sobre picture e srcset

BROWSERS

Page 72: Tudo que você precisa saber sobre picture e srcset
Page 73: Tudo que você precisa saber sobre picture e srcset
Page 74: Tudo que você precisa saber sobre picture e srcset

BROWSERSSRCSET: Chrome, Opera, Firefox,

Safari*, Edge*

PICTURE: Chrome, Opera, Firefox

Lembre do fallback

picturefill 2.0

Page 75: Tudo que você precisa saber sobre picture e srcset
Page 76: Tudo que você precisa saber sobre picture e srcset

NÃO PRECISA SEMPREimagem única às vezes é boa o suficiente

Page 77: Tudo que você precisa saber sobre picture e srcset

<picture> & srcsetTUDO QUE VOCÊ PRECISA SABER SOBRE

Page 78: Tudo que você precisa saber sobre picture e srcset

@sergio_caelum sergiolopes.org

OBRIGADO

Page 79: Tudo que você precisa saber sobre picture e srcset

PARA SABER MAIShttps://dev.opera.com/articles/native-responsive-images/ https://dev.opera.com/articles/responsive-images/ http://usecases.responsiveimages.org/ https://html.spec.whatwg.org/multipage/embedded-content.html http://alistapart.com/article/responsive-images-in-practice http://ericportis.com/posts/2014/srcset-sizes/ https://github.com/smaxtastic/grunt-responsive-images-extender https://github.com/andismith/grunt-responsive-images/

Page 80: Tudo que você precisa saber sobre picture e srcset

CRÉDITOS FOTOShttps://www.flickr.com/photos/freedomiiphotography/6203111667 https://www.flickr.com/photos/marfis75/16239031632 https://www.flickr.com/photos/tanelteemusk/6399051863 https://www.flickr.com/photos/noemigalera/4730832990 https://www.flickr.com/photos/heydrienne/22080973 https://www.flickr.com/photos/rvc/8286874239 https://www.flickr.com/photos/janssem/7549086426 https://www.flickr.com/photos/ben124/6735320631 https://www.flickr.com/photos/kosalabandara/14844923823 https://www.flickr.com/photos/benurs/4446310239