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圖片
把圖像擴展至最大尺寸,以使寬度和高度 徹底適應內容區域。
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 }
1 <div class="bsize1 bsize3"></div>
1 .bsize3 { 2 background-size: 400px; 3 /*background-size:100% 100%;*/ 4 }
1 <div class="bsize1 bsize5"></div>
1 .bsize5 { 2 background-size: 100%; 3 }
1 <div class="bsize1 cover"></div>
.cover { background-size:cover; }
<div class="bsize1 contain"></div>
.contain { background-size:contain; }
不使用背景圖片等狀況下,給圖片設置屬性 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的值,使用百分比的形式,這個值是相對於元素的寬而定的,好比我上面的一張圖片的寬度是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; }