Skip to content
本页目录

响应式图片

一种可以在不同的屏幕尺寸和分辨率的设备上都能良好工作以及其他特性的图片。

分辨率切换:不同的尺寸

显示相同的图片内容,仅仅依据设备来显示更大或更小的图片

srcset 和 sizes,来提供更多额外的资源图像和提示,帮助浏览器选择正确的一个资源。

html
<img
  srcset="
    elva-fairy-320w.jpg 320w,
    elva-fairy-480w.jpg 480w,
    elva-fairy-800w.jpg 800w
  "
  sizes="(max-width: 320px) 280px,
            (max-width: 480px) 440px,
            800px"
  src="elva-fairy-800w.jpg"
  alt="Elva dressed as a fairy"
/>

srcset 定义了允许浏览器选择的图像集,以及每个图像的大小。

  • 一个文件名 (elva-fairy-480w.jpg.)
  • 一个空格
  • 图像的固有宽度(以像素为单位)(480w)。注意,这里使用宽度描述符 w,而非你可能期望的 px。这是图像的真实大小,可以通过检查你电脑上的图片文件找到(例如,在 Mac 上,你可以在 Finder 上选择这个图像,然后按 Cmd + I 来显示信息)

sizes 定义了一组媒体条件(例如屏幕宽度)并且指明当某些媒体条件为真时,什么样的图片尺寸是最佳选择

  • 一个媒体条件((max-width:480px))当可视窗口的宽度是 480 像素或更少
  • 一个空格
  • 当媒体条件为真时,图像将填充的槽的宽度(440px)

TIP

对于槽的宽度,可以提供一个固定值 (px, em) 或者是一个相对于视口的长度 (vw),但不能是百分比。最后一个槽的宽度是没有媒体条件的,它是默认的,当没有任何一个媒体条件为真时,它就会生效。当浏览器成功匹配第一个媒体条件的时候,剩下所有的东西都会被忽略,所以要注意媒体条件的顺序。

有了这些属性,浏览器会:

  • 查看设备宽度
  • 检查 sizes 列表中哪个媒体条件是第一个为真
  • 查看给予该媒体查询的槽大小
  • 加载 srcset 列表中引用的最接近所选的槽大小的图像

分辨率切换:相同的尺寸,不同的分辨率

srcset 和 x 语法结合,而不用 sizes,来选择适当分辨率的图片。

html
<img
  srcset="elva-fairy-320w.jpg, elva-fairy-480w.jpg 1.5x, elva-fairy-640w.jpg 2x"
  src="elva-fairy-640w.jpg"
  alt="Elva dressed as a fairy"
/>

TIP

sizes 并不需要,浏览器计算出正在显示的显示器的分辨率,提供 srcset 引用的最适合的图像。如果访问页面的设备具有标准/低分辨率显示,一个设备像素表示一个 CSS 像素,elva-fairy-320w.jpg 会被加载(1x 是默认值,所以不需要写出来)。如果设备有高分辨率,两个或更多的设备像素表示一个 CSS 像素,elva-fairy-640w.jpg 会被加载。