Web Performance Optimization & Lighthouse · 课时

响应式图像与懒加载

使用 `srcset` 和 `sizes` 实现响应式图像技术,并对屏幕外媒体采用懒加载。

第 2 / 4 课11 个步骤

响应式图像与懒加载 是 CoddyKit 上的免费 Web Performance Optimization & Lighthouse 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Web Performance Optimization & Lighthouse 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Web Performance Optimization & Lighthouse 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Why Responsive Images?

Imagine browsing a website on a tiny phone screen, but the site loads an image meant for a huge desktop monitor. That's a waste of data and makes the page slow!

Responsive images ensure users get images optimized for their specific device and screen size, improving performance and user experience.

`srcset` for Resolution

The srcset attribute allows you to provide a list of different image files for the browser to choose from. One way to use it is for resolution switching.

This means serving higher-resolution images to devices with high-DPI (Retina) screens and standard resolution images to others.

  • 1x: Standard resolution
  • 2x, 3x: Higher resolutions
<img src="cat-1x.jpg" srcset="cat-1x.jpg 1x, cat-2x.jpg 2x" alt="A cute cat" />

`srcset` for Viewport Width

Beyond resolution, srcset can also help with viewport switching. This lets you offer different image files based on the browser's viewport width.

The w descriptor indicates the intrinsic width of the image file. The browser then picks the most appropriate source.

<img srcset="small.jpg 400w, medium.jpg 800w, large.jpg 1200w" src="medium.jpg" alt="A landscape" />

The `sizes` Attribute

When using srcset with w descriptors, the browser needs to know how wide the image will actually be rendered on the page at different viewport sizes. That's where the sizes attribute comes in.

sizes takes a list of media conditions and image slot widths. It tells the browser, "At this screen size, the image will take up X% of the viewport."

Working with `sizes`

The browser uses sizes to pick the best image from srcset. It doesn't resize the image; it just helps select the right source file.

  • (max-width: 600px) 100vw: If viewport is 600px or less, image is 100% of viewport width.
  • (max-width: 1200px) 50vw: If viewport is 1200px or less, image is 50% of viewport width.
  • 800px: Otherwise, image is 800px wide.

Combined `srcset` & `sizes`

Here’s how srcset and sizes work together. Try changing your browser window size to see how it might pick different images.

The browser uses sizes to calculate the ideal image width and then finds the closest match in srcset's provided widths.

<!DOCTYPE html>
<html>
<head>
  <title>Responsive Image</title>
</head>
<body>
  <img
    srcset="
      image-400w.jpg 400w,
      image-800w.jpg 800w,
      image-1200w.jpg 1200w"
    sizes="
      (max-width: 600px) 100vw,
      (max-width: 1200px) 50vw,
      800px"
    src="image-800w.jpg"
    alt="A beautiful landscape"
    style="max-width: 100%; height: auto;"
  >
  <p>Imagine image-400w.jpg, image-800w.jpg, image-1200w.jpg exist.</p>
</body>
</html>

Art Direction with `<picture>`

Sometimes, simply scaling an image isn't enough. You might want to display a completely different image, or a different crop, based on the screen size or device type. This is called art direction.

The <picture> element allows you to provide multiple <source> elements with different media queries and image sources, and a fallback <img>.

<picture>
  <source media="(max-width: 600px)" srcset="narrow-crop.jpg">
  <source media="(min-width: 601px)" srcset="wide-crop.jpg">
  <img src="default-crop.jpg" alt="A scenic view">
</picture>

What is Lazy Loading?

Even with responsive images, if a page has many images, it can still be slow. Lazy loading helps by deferring the loading of non-critical resources (like images or iframes) until they are needed.

Typically, this means loading them only when they are about to enter the user's viewport.

  • Reduces initial page load time.
  • Saves bandwidth for users.
  • Improves Core Web Vitals like LCP.

Native Lazy Loading

Modern browsers offer native lazy loading, meaning you don't need JavaScript libraries for basic lazy loading. You just add the loading="lazy" attribute to your <img> or <iframe> tags.

  • eager: Loads immediately.
  • lazy: Defers loading until near viewport.
  • auto: Browser decides.
<img src="placeholder.jpg" data-src="actual-image.jpg" loading="lazy" alt="Product image" />

<p>Note: <code>data-src</code> is often used with JS-based lazy loading. For native, just <code>src</code> + <code>loading='lazy'</code> is usually enough if the browser supports it.</p>

Quick Check

Which attributes and elements are primarily used to implement responsive images and lazy loading?

Lesson Summary

We've explored powerful techniques to optimize images and media for web performance:

  • Responsive Images: Use srcset (with x for resolution, w for viewport width) and sizes to deliver appropriate image sizes.
  • Art Direction: Employ the <picture> element for more control over image display based on media conditions.
  • Lazy Loading: Implement loading="lazy" on <img> and <iframe> to defer off-screen content, boosting initial page load speed.

By using these methods, you can significantly improve your website's performance and user experience!

免费开始

用 AI 导师学习 Web Performance Optimization & Lighthouse — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
12
课程
48

常见问题解答

「响应式图像与懒加载」课时是免费的吗?

是的 — 「响应式图像与懒加载」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Web Performance Optimization & Lighthouse 课程的其余内容,请升级到 CoddyKit PRO。 Web Performance Optimization & Lighthouse 课程共包含 4 节课。

「响应式图像与懒加载」这节课中我会学到什么?

使用 `srcset` 和 `sizes` 实现响应式图像技术,并对屏幕外媒体采用懒加载。 你通过在浏览器中直接运行的动手代码来练习 Web Performance Optimization & Lighthouse,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Web Performance Optimization & Lighthouse 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Web Performance Optimization & Lighthouse 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「响应式图像与懒加载」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Web Performance Optimization & Lighthouse 课中编写并运行代码吗?

能。每节 Web Performance Optimization & Lighthouse 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 高效的图像格式
  2. 响应式图像与懒加载
  3. 视频与动画性能
  4. 图像 CDN 与传输优化
← 返回 Web Performance Optimization & Lighthouse