Skip to content

2026-08-03

/ 5 分鐘閱讀

/ Web Performance Fundamentals

改善 LCP:使用 picture 元素實作響應式圖片

<picture> 元素的結構

HTML 原生支援響應式圖片,主要透過 <picture> 元素搭配 <source><img> 組合使用:

html
<picture class="illustration">
    <source
        media="(max-width: 720px)"
        srcset="/hero-mobile.png?width=720 720w, /hero-mobile.png?width=1440 1440w"
    />
    <source
        media="(min-width: 721px)"
        srcset="
            /hero-desktop.png?width=720   720w,
            /hero-desktop.png?width=1440 1440w,
            /hero-desktop.png?width=2800 2800w
        "
    />
    <img
        src="/hero-desktop.png?width=2800"
        alt="Developer Stickers Online"
        fetchpriority="high"
        height="1200"
        width="2800"
    />
</picture>

這個結構有三個層次:

<img>(底層預設):放在最下方,作為後備選項。如果瀏覽器不支援 <picture> 或沒有符合任何 <source> 條件,就使用這張圖片。這裡同時加上了 fetchpriority="high",確保這個 LCP 元素被優先下載。

<source>(條件選擇器):用 media 屬性定義類似 CSS media query 的條件,告訴瀏覽器「在這個螢幕寬度下,使用這組圖片」。

srcset(尺寸規則):在每個 <source> 內,用 srcset 列出不同寬度對應的圖片檔案,格式是「檔案路徑 寬度w」。瀏覽器會根據目前顯示空間的大小,自動選擇最合適的那一張。

瀏覽器如何選擇圖片

當瀏覽器渲染這段 HTML 時,它會評估每個 <source>media 條件,找到第一個符合的選項,再從該選項的 srcset 中選擇最適合當前顯示寬度的圖片。

以行動裝置(max-width: 720px)為例:如果螢幕寬度是 701px,瀏覽器會看 srcset 中的選項,發現 360w 太小、720w 符合(因為 701 < 720),就選擇 720w 的版本下載。

對桌面裝置(min-width: 721px),瀏覽器同樣依照螢幕大小從 720w、1440w、2800w 三個選項中挑選最合適的,避免在小螢幕上傳輸 2800px 寬的超大圖片。

實際效益

這個機制讓你能夠精確控制在不同裝置上傳送的圖片大小,而不是對所有人都傳送最大版本。一個 300px 寬的手機不需要下載 2800px 的 hero 圖片,這樣的浪費在行動裝置上尤其明顯。

下一步是搭配圖片壓縮工具,實際產生這些不同尺寸的圖片版本並進行格式優化。

複習

哪個 HTML 元素允許為不同螢幕尺寸指定不同的圖片?

picture 元素支援根據類似媒體查詢的條件與螢幕尺寸,指定不同的圖片來源

picture 標籤內的 source 元素在響應式圖片中如何運作?

source 元素允許為特定螢幕寬度指定不同的圖片檔案,讓瀏覽器能根據當前顯示尺寸自動選擇最合適的圖片

source 元素中用來定義圖片選擇規則的屬性是什麼?

srcset 屬性用來指定根據螢幕寬度選擇不同圖片的規則

瀏覽器如何決定在 picture 元素中顯示哪張圖片?

瀏覽器評估螢幕寬度,根據指定的 source 元素規則選擇最合適的圖片,選擇符合當前顯示空間的最大適合版本

如果 picture 元素中沒有任何 source 條件符合,會發生什麼事?

picture 元素內 img 標籤指定的預設圖片將會被顯示

小測驗

哪個 HTML 元素允許為不同螢幕尺寸指定多個圖片來源? picture
source 元素中用來根據螢幕寬度指定圖片顯示規則的屬性是什麼? srcset
如果瀏覽器不符合其他 source 條件,哪個屬性用來指定預設圖片? img 標籤本身
當有多個 source 元素時,瀏覽器會自動做什麼? 選擇符合螢幕寬度的圖片

此文章是 FrontendMasters 上的 Web Performance Fundamentals 課程筆記

最後更新時間:

Buy Me A Coffee

系列章節 第 37 篇 / 共 41 篇

0 %
MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Federica Galli on Unsplash