CodeGym /課程 /Frontend SELF TW /Retina 圖像

Retina 圖像

Frontend SELF TW
等級 26 , 課堂 0
開放

6.1 使用 srcsetsizes 屬性

像是 Apple 的 Retina 顯示器這種高像素密度的螢幕,已成為許多現代設備的標準。這些顯示器每英寸的像素數(PPI)更多,提供更清晰詳細的圖像。對於 web 開發者來說,優化這些螢幕的圖像很重要,這樣用戶的體驗才能達到最佳。我們來看看如何做到這一點。

高密度螢幕相關問題

在高密度螢幕上,標準圖像可能會顯得模糊或像素化,因為圖像的一個像素被拉伸到螢幕的多個像素。要解決這個問題,需要使用分辨率更高的圖像,這樣瀏覽器就能縮放以在高密度螢幕上顯示。

srcsetsizes 屬性允許為不同的像素密度指定不同版本的圖像。這幫助瀏覽器選擇最適合特定設備的圖像。

srcset 和 sizes 的使用範例:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Retina 顯示器優化</title>
        </head>
        <body>
          <img
            src="images/default.jpg"
            srcset="images/image-1x.jpg 1x,
              images/image-2x.jpg 2x,
              images/image-3x.jpg 3x"
            sizes="(max-width: 600px) 100vw,
              (max-width: 1200px) 50vw, 33vw"
            alt="Retina 顯示器範例圖像">
        </body>
      </html>
    
  

代码解释:

  • srcset:指定圖像的三個版本以適應不同的像素密度(1x2x3x
  • sizes:定義圖像在不同顯示條件下的寬度:
    • 寬度小於 600px — 圖片佔瀏覽器視窗寬度的 100%
    • 寬度小於 1200px — 圖片佔瀏覽器視窗寬度的 50%
    • 其他情況下 — 圖片佔瀏覽器視窗寬度的 33%

6.2 使用向量圖形 (SVG)

向量圖形 (SVG) 就是高密度螢幕的絕佳解決方案,因為 SVG 文件可以無損縮放。它們非常適合用於標誌、圖標和其他介面元素。

SVG 使用範例:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>使用 SVG 在 Retina 顯示器上</title>
        </head>
        <body>
          <img src="images/logo.svg" alt="標誌">
        </body>
      </html>
    
  

代码解释:

  • src="images/logo.svg":指定 SVG 文件的路徑,這個文件將可以無損縮放到任意尺寸

6.3 使用 CSS

對於背景圖片,可以使用 媒體查詢和 CSS 屬性,依據設備的像素密度載入不同版本的圖片。

背景圖片的 CSS 使用範例:

CSS
    
      .background {
        background-image: url('images/background-1x.jpg');
      }

      @media only screen and (min-resolution: 2dppx) {
        .background {
          background-image: url('images/background-2x.jpg');
        }
      }

      @media only screen and (min-resolution: 3dppx) {
        .background {
          background-image: url('images/background-3x.jpg');
        }
      }
    
  

代码解释:

  • .background:定義基本背景圖片
  • @media only screen and (min-resolution: 2dppx):變更背景圖片為適合 2x 密度的版本
  • @media only screen and (min-resolution: 3dppx):變更背景圖片為適合 3x 密度的版本

6.4 元素 <picture>

標籤 <picture> 允許在不同顯示條件下指定多個圖片來源。這對於更複雜的圖片適配情況很有用。

<picture> 使用範例:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>使用 <picture> 在 Retina 顯示器上</title>
        </head>
        <body>
          <picture>
            <source srcset="images/image-3x.jpg" media="(min-resolution: 3dppx)">
            <source srcset="images/image-2x.jpg" media="(min-resolution: 2dppx)">
            <img src="images/image-1x.jpg" alt="Retina 顯示器範例圖像">
          </picture>
        </body>
      </html>
    
  

代码解释:

  • <source>:指定不同顯示條件的圖片來源
  • <img>:為不支援 <picture> 的設備設置默認圖片

6.5 圖片優化範例

範例 1:高分辨率自適應圖片

我們創建一個範例,其中的圖片是使用 srcsetsizes 屬性為高密度螢幕優化的:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>為 Retina 顯示器設計的自適應圖片</title>
        </head>
        <body>
          <img
            src="images/default.jpg"
            srcset="images/image-1x.jpg 1x,
              images/image-2x.jpg 2x,
              images/image-3x.jpg 3x"
            sizes="(max-width: 600px) 100vw,
              (max-width: 1200px) 50vw, 33vw"
            alt="Retina 顯示器範例圖像">
        </body>
      </html>
    
  

代码解释:

  • srcset:為不同的像素密度定義三個版本的圖像(1x2x3x
  • sizes:為圖像在不同顯示條件下定義寬度:
    • 寬度小於 600px — 圖片佔瀏覽器視窗寬度的 100%
    • 寬度小於 1200px — 圖片佔瀏覽器視窗寬度的 50%
    • 其他情況下 — 圖片佔瀏覽器視窗寬度的 33%

範例 2:使用 SVG 進行可縮放圖像

我們創建一個範例,其中使用 SVG 以確保在任何設備上的高質量顯示:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>在 Retina 顯示器上使用 SVG</title>
        </head>
        <body>
          <img src="images/logo.svg" alt="標誌">
        </body>
      </html>
    
  

代码解释:

  • src="images/logo.svg":指定 SVG 文件的路徑,這個文件可以無損縮放到任意尺寸
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION