響應式 Web 設計 – 圖片


使用 width 屬性

如果 width 屬性設定為 100%,圖片會根據上下範圍實現響應式功能:

例項

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",則會把背景影象擴充套件至足夠大,以使背景影象完全覆蓋背景區域。注意該屬性保持了圖片的比例因此 背景影象的某些部分無法顯示在背景定位區域中。

這是 CSS 程式碼:

例項

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

嘗試一下 ?

不同裝置顯示不同圖片

大尺寸圖片可以顯示在大螢幕上,但在小螢幕上卻不能很好顯示。我們沒有必要在小螢幕上去載入大圖片,這樣很影響載入速度。所以我們可以使用媒體查詢,根據不同的裝置顯示不同的圖片。

以下大圖片和小圖片將顯示在不同裝置上:

例項

/* For width smaller than 400px: */
body {
    background-image: url('img_smallflower.jpg');
}

/* For width 400px and larger: */
@media only screen and (min-width: 400px) {
    body {
        background-image: url('img_flowers.jpg');
    }
}

嘗試一下 ?

你可以使用媒體查詢的 min-device-width 替代 min-width 屬性,它將檢測的是裝置寬度而不是瀏覽器寬度。瀏覽器大小重置時,圖片大小不會改變。

例項

/* 裝置小於 400px: */
body {
    background-image: url('img_smallflower.jpg');
}

/* 裝置大於 400px (也等於): */
@media only screen and (min-device-width: 400px) {
    body {
        background-image: url('img_flowers.jpg');
    }
}

嘗試一下 ?

HTML5 <picture> 元素

HTML5 的 <picture> 元素可以設定多張圖片。

瀏覽器支援

元素
<picture> 不支援 38.0 38.0 不支援 25.0

<picture> 元素類似於 <video><audio> 元素。可以裝置不同的資源,第一個設定的資源為首選使用的:

例項

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

嘗試一下 ?

srcset 屬性的必須的,定義了圖片資源。

media 屬性是可選的,可以在媒體查詢的 CSS @media 規則 檢視詳情。

對於不支援 <picture> 元素的瀏覽器你也可以定義 <img> 元素來替代。