Srcset 和 sizes




 Srcset and sizes使 CC BY 3.0 


 1993.2.23  2010.5.25 






 Photoshop



 

()


测量图片所占的空间大小
计算图片大小
把图片放入页面中
完工吃豆子
 Web 



Ethan Marcotte 13Steve Jobs /齿





响应式图片与媒体查询
 web  1000 使使



小意思
使

糟糕咬到牙了



CSS 








西 *  

Web    CSS CSS 













计算响应式图片规则





large.jpg (1024 x 768)

medium.jpg (640 x 480)

small.jpg (320 x 240)


  

 1x  2x 



large.jpg   small.jpg  medium.jpg  large.jpg
    渲染尺寸x像素密度 > 尺寸仅次于它的文件长度


    渲染尺寸 = 图片相对视口的比例x视口尺寸

 medium.jpg
    尺寸仅次于它的文件长度 = 640px


    图片相对视口的比例x
    视口尺寸x
    像素密度
    > 640px


    视口尺寸 >
      640px ÷
      (图片相对视口的比例x像素密度)



(36em) 100vw 33.3vw

 1x  2x

x = 

1x


 36em
    视口尺寸 < 36em

 = 100vw  = 1x 
    视口尺寸 >
      640px ÷ ( 100vw x 1x ) = 640px = 40em

西
    36em > 视口尺寸 > 40em

  1x  large.jpg

2x



    视口尺寸 < 36em

 2x
    视口尺寸 >
      640px ÷ ( 100vw x 2x ) = 320px = 20em


    36em > 视口尺寸 > 20em

2x  large.jpg

1x



    视口尺寸 > 36em

 1x 
    视口尺寸 >
      640px ÷ ( 33.3vw × 1x ) = 1920px = 120em

 120em  36em 36em  1x  large.jpg
    视口尺寸 > 120em

Ok

2x

    视口尺寸 > 36em


    视口尺寸 >
      640px ÷ ( 33.3vw × 2x ) = 960px = 60em

 2x  large.jpg
    视口尺寸 > 60em


    ( (min-device-pixel-ratio: 1.5) and (min-width: 20.001em) and (max-width: 35.999em) ) or
    ( (max-device-pixel-ratio: 1.5) and (min-width: 120.001em) ) or
    ( (min-device-pixel-ratio: 1.5) and (min-width: 60.001em) )

medium.jpg 

使 
    <picture>

      <source src="large.jpg"
              media="( (min-device-pixel-ratio: 1.5) and (min-width: 20.001em) and (max-width: 35.999em) ) or
                     ( (max-device-pixel-ratio: 1.5) and (min-width: 120.001em) ) or
                     ( (min-device-pixel-ratio: 1.5) and (min-width: 60.001em) )" />
      <source src="medium.jpg"
              media="( (max-device-pixel-ratio: 1.5) and (min-width: 20.001em) and (max-width: 35.999em) ) or
                     ( (max-device-pixel-ratio: 1.5) and (min-width: 60.001em) ) or
                     ( (min-device-pixel-ratio: 1.5) and (min-width: 10.001em) )" />
      <source src="small.jpg" />

      
      <img src="small.jpg" alt="A rad wolf" />

    picture>



21

     

吐

srcset + sizes = 





变量作者在写代码时是否清楚?浏览器加载页面时是否清楚?
视口尺寸noyes
图片相对视口的比例yesno
像素密度noyes
源文件尺寸yesno

 yes no









西

  size  srcset  w
变量作者在写代码时是否清楚?浏览器加载页面时是否清楚?
视口尺寸noyes
图片相对视口的比例yesnoyes! 通过 `size`!
像素密度noyes
源文件尺寸yesnoyes! 通过 `srcset`!

彩虹


( 2014.3.24 Chrome 34Firefox 33 )使

 srcset  srcset srcset  URLS 使 w w w w w srcset  w

黑衣人


  使 URLs使

Okay使 srcset  size




large.jpg (1024 x 768)

medium.jpg (640 x 480)

small.jpg (320 x 240)


 36em 


    <img src="small.jpg"
         srcset="large.jpg 1024w,
                 medium.jpg 640w,
                 small.jpg 320w"
         sizes="(min-width: 36em) 33.3vw,
                100vw"
         alt="A rad wolf" />

 picture  picture srcset  size  使 

 
    src="small.jpg"

(fallback) src srcset & size 


    srcset="large.jpg 1024w,
            medium.jpg 640w,
            small.jpg 320w"

srcset  URLs  w Web 1024×768 srcset  1024w

表述性
 CSS 

()使 h

 srcset 使 1x/2x  w srcset 使

x 和 w 不要混用
Okay srcset  w

 sizes
    sizes="(min-width: 36em) 33.3vw,
           100vw"


    sizes="[media query] [length], [media query] [length] ... etc"

使



() CSS (36em)60em20em10em  sizes 



 1x & 2x 使2016  4.8625x srcset & sizes 

sizes  srcset 



 99px16em33.3vw使 calc()  12em  sizes 
    sizes="(min-width: 36em) calc(.333 * (100vw - 12em)),
           100vw"



Okayokay 100vw 

使
    <img src="small.jpg"
         srcset="large.jpg 1024w, medium.jpg 640w, small.jpg 320w"
         sizes="100vw"
         alt="A rad wolf" />



一地豆子