CSS3中的background-size(對響應性圖片等比例縮放)

background-size的基本屬性

background-size: 能夠設定背景圖像的尺寸,該屬性是css3中的,在移動端使用的地方不少,好比最多見的地方在作響應性佈局的時候,好比以前作的項目中有輪播圖片,爲了自適應不一樣大小分辨率的圖片,我門須要使用css3中的媒體查詢來針對不一樣的分辨率設置寬度和高度,雖然這種方式是能夠解決問題,可是解決方式並非太好,而且很繁瑣,固然我門也想過直接使用百分比設置圖片的大小,好比width(寬度): 100%,height(高度):100%; 可是設置圖片等高度100%的時候並不生效,圖片沒有顯示出來,由於沒有設置具體的高度值,瀏覽器渲染的時候並無高度,所以當時解決的方法是使用css3中的媒體查詢真對不一樣的分辨率等比例縮放不一樣的height(高度)。css

瀏覽器支持的程度:IE9+, Firefox4+, opera, chrome, safari5+;css3

基本語法:background-size: length | percentage | cover | contain; chrome

一:length瀏覽器

    該屬性值是設置背景圖像的寬度和高度的,第一個值是寬度,第二個值是設置高度的。若是隻設置第一個值,那麼第二個值會自動轉換爲 「auto」;佈局

二:percentageurl

     該屬性是以父元素的百分比來設置圖片的寬度和高度的,第一個值是寬度,第二個值是高度。若是隻設置一個值,那麼第二個值會被設置爲 「auto」;spa

三:covercode

      把背景圖像擴展至足夠大,以使背景圖像徹底覆蓋背景區域。blog

四:contain圖片

      把圖像擴展至最大尺寸,以使寬度和高度 徹底適應內容區域。

設置固定寬度400px和高度200px後的圖片

1 <div class="bsize1"></div>
1 .bsize1 {
2      width:400px;
3      height:200px;
4      background: url("1.jpg") no-repeat;
5      border:1px solid red;
6      overflow: hidden;
7   }

固定寬度400px和高度200px-使用background-size:400px 200px縮放設置或者使用background-size:100% 100%縮放設置

1 <div class="bsize1 bsize3"></div>
1 .bsize3 {
2          background-size: 400px;
3         /*background-size:100% 100%;*/
4  }    

固定寬度400px和高度200px-使用background-size:100%的縮放設置

1 <div class="bsize1 bsize5"></div>
1 .bsize5 {
2          background-size: 100%;
3   }

 

使用屬性cover來設置背景圖片

1 <div class="bsize1 cover"></div>
.cover {
        background-size:cover;
 }

使用屬性contain來設置背景圖片

<div class="bsize1 contain"></div>
.contain {
        background-size:contain;
  }

給圖片設置width屬性100%;高度自適應

不使用背景圖片等狀況下,給圖片設置屬性 width = 100%,它的高度會自適應的。以下HTML代碼:

<div class="bsize-padding"><img src="3.jpg" width="100%"/></div>

使用另外一種方式來解決圖片自適應的問題--圖片自適應問題

圖片寬度設置100%,頁面加載時會存在高度塌陷的問題,可使用padding-top來設置百分比值來實現自適應 padding-top = (圖片的高度/圖片的寬度)*100;

<p>可使用padding-top來設置百分比值來實現自適應 padding-top = (圖片的高度/圖片的寬度)*100</p>
<div class="cover-paddingTop">
      <img src="5.jpg"/>
</div>
.cover-paddingTop {
       position: relative;
       padding-top: 50%; 
       overflow: hidden;
  }
 .cover-paddingTop img{
      width:100%;
      position: absolute;
      top:0;
  }

使用padding-top:(percentage)實現響應式背景圖片

實現的基本原理:將使用到保持元素的寬高比的技巧,爲元素添加垂直方向的padding-top的值,使用百分比的形式,這個值是相對於元素的寬而定的,好比我上面的一張圖片的寬度是1024px,高度爲316px;那麼如今的

padding-top = (高度 / 寬度 )*100% = (316 / 1024)* 100% =  30.85%;

可是僅僅對圖片高度和寬度縮放的放還不夠,我門還必須添加 background-size:cover, 使這個屬性讓背景鋪滿元素的,可是IE8及如下不支持該屬性,所以爲了兼容IE下面的瀏覽器,我門還須要再加一個屬性 background-position: center ; 同時我門也要保證 圖片的寬度最大等於父容器的寬度;所以下面的HTML代碼以下:

<div class="column">
    <div class="figure"></div>
</div>
.column{
        max-width: 1024px;
 }
 .figure {
         padding-top:30.85%; /* 316 / 1024 */
         background: url("6.jpg") no-repeat;
          background-size:cover;
          background-position:center;
    }

相關文章
相關標籤/搜索