标准答案

  1. picture 是容器,内部可以放多个 source 和一个 img。
  2. source 可以用 media、type、srcset 提供不同条件下的图片资源。
  3. img 是必须的兜底元素,也承载 alt、width、height、loading 等关键属性。
  4. 如果只是同一张图按像素密度或宽度切换,img 的 srcset 和 sizes 通常就够了。
  5. 如果要按视口换裁剪图、优先 AVIF/WebP 并降级到 JPG,picture 更合适。

题目解析

这题要区分响应式分辨率和艺术方向。前者是同一图片不同尺寸,后者是不同裁剪或不同内容。

无论用不用 picture,img 的 alt 和尺寸属性都不能省略,否则会影响可访问性和布局稳定。

代码示例

浏览器会按 source 顺序选择第一个满足条件的资源,最后回退到 img。

HTML
<picture>
  <source type="image/avif" srcset="/hero.avif">
  <source media="(max-width: 640px)" srcset="/hero-mobile.webp">
  <img
    src="/hero.jpg"
    alt="产品截图"
    width="1200"
    height="640"
    loading="lazy"
  >
</picture>

常见误区

  • 用了 picture 后忘记写 img,导致没有兜底内容。
  • 把不同格式、不同尺寸和不同裁剪混在一起,却没有明确选择条件。
  • 不写 width 和 height,图片加载后造成布局偏移。

作者信息