使用 srcset 属性的响应式图像

使用带有大小的 srcset

<img sizes="(min-width: 1200px) 580px,
      (min-width: 640px) 48vw,
      98vw"
    srcset="img/hello-300.jpg 300w,
      img/hello-600.jpg 600w,
      img/hello-900.jpg 900w,
      img/hello-1200.jpg 1200w"
    src="img/hello-900.jpg" alt="hello">

sizes 就像媒体查询一样,描述了视口对图像的占用空间。

  • 如果视口大于 1200px,则图像正好是 580px(例如,我们的内容集中在容器中,最大宽度为 1200px。图像占其中的一半减去边距)。
  • 如果视口位于 640px 和 1200px 之间,则图像占视口的 48%(例如,图像与我们的页面缩放,并占视口宽度的一半减去边距)。
  • 如果视口是任何其他大小,在我们的情况下小于 640px,图像占视口的 98%(例如图像缩放与我们的页面并取视口的全宽减去边距)。最后一项必须省略介质条件。

srcset 只是告诉浏览器我们有哪些图像,以及它们的大小。

  • img/hello-300.jpg 宽 300px,
  • img/hello-600.jpg 宽 600px,
  • img/hello-900.jpg 宽 900px,
  • img/hello-1200.jpg 宽 1200px

src 始终是强制性图像源。在使用 srcset 的情况下,如果浏览器不支持 srcsetsrc 将提供后备图像。

使用没有大小的 srcset

<img src="img/hello-300.jpg" alt="hello"
     srcset="img/hello-300.jpg 1x, 
       img/hello-600.jpg 2x,
       img/hello-1200.jpg 3x">

srcset 提供可用图像列表,设备像素比为 x 描述符。

  • 如果设备像素比为 1,请使用 img/hello-300.jpg
  • 如果设备像素比为 2,请使用 img/hello-600.jpg
  • 如果设备像素比为 3,请使用 img/hello-1200.jpg

src 始终是强制性图像源。在使用 srcset 的情况下,如果浏览器不支持 srcsetsrc 将提供后备图像。