×

PICTURE 和 SOURCE 標籤

元智汇电子 元智汇电子 发表于2023-10-01 12:23:18 浏览75 评论0

抢沙发发表评论

上面兩節分別解決了圖元密度和螢幕大小的適配,但是如果要同時適配不同圖元密度、不同大小的螢幕,應該怎麼辦呢?

 

這時,就要用到<picture>標籤。它是一個容器標籤,內部使用<source><img>,指定不同情況下載入的圖像。

 

 

<picture>

  <source media="(max-width: 500px)" srcset="cat-vertical.jpg">

  <source media="(min-width: 501px)" srcset="cat-horizontal.jpg">

  <img src="cat.jpg" alt="cat">

</picture>

上面代碼中,<picture>標籤內部有兩個<source>標籤和一個<img>標籤。

 

<source>標籤的media屬性給出媒體查詢運算式,srcset屬性就是<img>標籤的srcset屬性,給出載入的影像檔。sizes屬性其實這裡也可以用,但由於有了media屬性,就沒有必要了。

 

流覽器按照<source>標籤出現的順序,依次判斷當前設備是否滿足media屬性的媒體查詢運算式,如果滿足就載入srcset屬性指定的圖片檔,並且不再執行後面的<source>標籤和<img>標籤。

 

<img>標籤是預設情況下載入的圖像,用來滿足上面所有<source>都不匹配的情況。

 

上面例子中,設備寬度如果不超過500px,就載入豎屏的圖像,否則載入橫屏的圖像。

 

下面給出一個例子,同時考慮螢幕尺寸和圖元密度的適配。

 

 

<picture>

  <source srcset="homepage-person@desktop.png,

                  homepage-person@desktop-2x.png 2x"      

          media="(min-width: 990px)">

  <source srcset="homepage-person@tablet.png,

                  homepage-person@tablet-2x.png 2x"

          media="(min-width: 750px)">

  <img srcset="homepage-person@mobile.png,

               homepage-person@mobile-2x.png 2x"

       alt="Shopify Merchant, Corrine Anestopoulos">

</picture>

上面代碼中,<source>標籤的media屬性給出螢幕尺寸的適配條件,每個條件都用srcset屬性,再給出兩種圖元密度的圖像 URL


群贤毕至

访客