為什麼在圖片標籤中指定 widthheight

在建立網頁時,最常使用的標籤之一就是 <img>。然而,仍有許多情況只指定 src,而忽略了尺寸資訊。

這樣做會導致頁面在載入時產生佈局抖動,影響使用者體驗與效能指標。本文將從技術角度說明為何在 <img> 標籤中指定 widthheight 重要,以及實際帶來的好處。


1. 影響渲染效能與頁面載入速度



1-1. 確保佈局穩定性(Stable Layout)

瀏覽器在解析 HTML 時會盡快渲染畫面。若無法得知圖片尺寸,瀏覽器就無法預先計算該元素佔據的空間。

結果,圖片載入時會把原本的內容推開,產生使用者未預期的 佈局抖動(Layout Shift)

<img src="photo.jpg">

在此情況下,圖片載入前被視為高度為 0 的元素,載入後才顯示實際高度,導致畫面重新排版。


1-2. 降低 Cumulative Layout Shift (CLS)

CLS 是 Google Core Web Vitals 的一項指標,用來量化頁面載入時的意外佈局移動。

若在圖片中指定 widthheight,瀏覽器即使在圖片尚未載入前,也能計算出正確的長寬比,預留所需空間。

CLS 標準

  • CLS ≤ 0.1 : 良好
  • CLS ≥ 0.25 : 需要改善

明確指定圖片尺寸是降低 CLS 最簡單、最有效的方法之一。


1-3. 正確認識網路頻寬

有一個常見誤解:

指定 widthheight 並不會減少下載的圖片檔案大小。

  • 瀏覽器仍會下載原始圖片。
  • width / height 僅作為佈局計算資訊。

實際的頻寬節省可透過以下方式實現:

  • 使用 srcset / sizes
  • 伺服器端圖片重新調整尺寸
  • 使用 <picture> 元素

但即使不節省頻寬,指定尺寸能使渲染過程更穩定,使用者感知的載入效能與視覺完整度大幅提升。


2. 可及性(Accessibility)方面的優勢

2-1. 可預測的閱讀流程

可及性的核心是 alt 屬性,但佈局穩定性亦扮演輔助角色。

若圖片尺寸明確,頁面結構更可預測,使用螢幕閱讀器時內容流也不會突變,提升使用者體驗。

widthheight 本身不是可及性的必備項,但佈局穩定性能間接提升可及性。


2-2. 行動裝置上的佈局可預測性

行動裝置畫面有限,任何微小的佈局變動都會被放大感知。

若未指定圖片尺寸,載入時可能造成內容被推開,或縮放時元素間距突變。

明確設定圖片比例可降低此類不穩定性。


3. SEO(搜尋引擎最佳化)觀點



CLS 與 SEO 最佳化關係圖

搜尋引擎重視頁面的載入效能與使用者體驗。

  • 低 CLS 的頁面
  • 初始渲染穩定的頁面

這些特性會被搜尋引擎視為高品質頁面。

此外,清晰的圖片結構有助於搜尋引擎更有效理解頁面,甚至在圖片搜尋結果中獲得正面影響。


4. 實際程式碼範例

4-1. 未指定尺寸(問題案例)

<img src="https://example.com/photo.jpg" alt="Beautiful scenery">

4-2. 指定尺寸(建議案例)

<img
  src="https://example.com/photo.jpg"
  alt="Beautiful scenery"
  width="800"
  height="600">

注意事項

  • widthheight 以像素為單位。
  • 在響應式佈局中,通常會搭配下列 CSS。
img {
  max-width: 100%;
  height: auto;
}

5. 實戰小技巧總結

情境 推薦做法
靜態圖片 指定 widthheight
響應式圖片 width/height + max-width: 100%; height: auto;
動態圖片 伺服器端根據元資料插入尺寸
SVG viewBox 定義比例,必要時加 width/height

6. 結論

  • 確保佈局穩定 → 降低 CLS → 改善使用者體驗
  • 提升渲染可預測性 → 讓感知效能更佳
  • 提供 SEO 正面訊號

在圖片標籤中指定 widthheight 不僅是程式碼風格,更是提升網頁效能與 UX 的基本原則。只要養成在加入圖片時自動設定這兩個屬性的習慣,網頁品質就會顯著提升。

以下文章也值得前端工程師參考

  1. 即使是後端工程師也應該知道的基本 - 前端 JS 方法與模組的最佳 5
  2. [網頁文件上傳簡化] Dropzone.js 完全攻略指南