響應式網頁設計 - 圖像

使用 width 屬性

如果 width 屬性設置為百分比,且高度設置為 "auto",則圖像將進行響應來放大或縮小:

實例

img {
  width: 100%;
  height: auto;
}

親自試一試

請注意,在上面的例子中,圖像可以放大到大于其原始大小。在多數情況下,更好的解決方案是改為使用 max-width 屬性。

使用 max-width 屬性

如果將 max-width 屬性設置為 100%,則圖像將按需縮小,但絕不會放大到大于其原始大小:

實例

img {
  max-width: 100%;
  height: auto;
}

親自試一試

向實例網頁添加圖像

實例

img {
  width: 100%;
  height: auto;
}

親自試一試

背景圖像

背景圖像也可以響應調整大小和縮放比例。

這是我們展示的三種不同方法:

1. 如果將 background-size 屬性設置為 "contain",則背景圖像將縮放,并嘗試匹配內容區域。不過圖像將保持其長寬比(圖像寬度與高度之間的比例關系):

這是 CSS 代碼:

實例

div {
  width: 100%;
  height: 400px;
  background-image: url('img_flowers.jpg');
  background-repeat: no-repeat;
  background-size: contain;
  border: 1px solid red;
}

親自試一試

2. 如果將 background-size 屬性設置為 "100% 100%",則背景圖像將拉伸以覆蓋整個內容區域:

這是 CSS 代碼:

實例

div {
  width: 100%;
  height: 400px;
  background-image: url('img_flowers.jpg');
  background-size: 100% 100%;
  border: 1px solid red;
}

親自試一試

3. 如果 background-size 屬性設置為 "cover",則背景圖像將縮放以覆蓋整個內容區域。請注意,"cover" 值保持長寬比,且可能會裁剪背景圖像的某部分:

這是 CSS 代碼:

實例

div {
  width: 100%;
  height: 400px;
  background-image: url('img_flowers.jpg');
  background-size: cover;
  border: 1px solid red;
}

親自試一試

為不同設備準備不同圖像

大幅的圖像在大型計算機屏幕上可以完美顯示,但在小型設備上就沒用了。為什么在不得不縮小圖像時又加載大圖像呢?為了減少負載或出于任何其他原因,您可以使用媒體查詢在不同的設備上顯示不同的圖像。

這是一幅大圖像和一幅小圖像,會在不同的設備上顯示:

實例

/* 針對小于 400 像素的寬度: */
body {
  background-image: url('img_smallflower.jpg'); 
}
/* 針對 400 像素或更大的寬度: */
@media only screen and (min-width: 400px) {
  body { 
    background-image: url('img_flowers.jpg'); 
  }
}

親自試一試

您可以使用媒體查詢 min-device-width 而不是 min-width 來檢查設備寬度,而不是瀏覽器寬度。然后,當您調整瀏覽器窗口的大小時,圖像將不會變化:

實例

/* 針對小于 400 像素的設備: */
body {
  background-image: url('img_smallflower.jpg'); 
}
/* 針對 400 像素及更大的設備: */
@media only screen and (min-device-width: 400px) {
  body { 
    background-image: url('img_flowers.jpg'); 
  }
}

親自試一試

HTML5 <picture> 元素

HTML5 引入了 <picture> 元素,該元素使您可以定義多幅圖像。

瀏覽器支持

38.0 13 38.0 9.1 25.0

<picture> 元素的作用類似于 <video><audio> 元素。我們設置了不同的來源,而匹配優先權的第一個來源是正在使用的來源:

實例

<picture>
  <source srcset="img_smallflower.jpg" media="(max-width: 400px)">
  <source srcset="img_flowers.jpg">
  <img src="img_flowers.jpg" alt="Flowers">
</picture>

親自試一試

srcset 屬性是必需的,它定義圖像的來源。

media 屬性是可選的,它接受可在 CSS @media 規則 中找到的媒體查詢。

提示:您還應該為不支持 <picture> 元素的瀏覽器定義 <img> 元素。