在CSS3之前,背景圖片的大小是由圖片的實際大小決定的。
在CSS3中,我們可以使用background-size屬性來設置背景圖片的大小,這使得我們可以在不同的環境中重復使用背景圖片。
語法:
background-size:取值;
說明:
background-size取值共有2種,一種是使用長度值(如px、百分比);另外一種是使用關鍵字。
background-size關鍵字取值如下表:
以下實例都是使用如下圖片作為背景圖片(120px×80px):
舉例1:background-size取值為長度值
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS3 background-size屬性</title>
<style type="text/css">
div
{
width:160px;
height:100px;
border:1px solid red;
margin-bottom:10px;
background-image:url("../App_images/lesson/run_css3/css3.png");
background-repeat:no-repeat;
}
#div2{background-size:160px 100px;}
</style>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>
在浏覽器預覽效果如下:
分析:
第1個div元素背景圖片大小使用默認值(即圖片的實際大小),而第2個div元素使用background-size屬性重新定義了背景圖片的大小。其中,“background-size:160px 100px”表示定義背景圖片寬度為160px,高度為100px。
舉例2:background-size取值為關鍵字
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS3 background-size屬性</title>
<style type="text/css">
div
{
width:160px;
height:100px;
border:1px solid red;
margin-bottom:10px;
background-image:url("../App_images/lesson/run_css3/css3.png");
background-repeat:no-repeat;
}
#div2{background-size:cover;}
#div3{background-size:contain;}
</style>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</body>
</html>
在浏覽器預覽效果如下:
分析:
第1個div沒有使用background-size屬性。我們從第2個div和第3個div,可以看出背景圖片都產生了縮放。當屬性background-size的值為cover時,背景圖像按比例縮放,直到覆蓋整個背景區域為止,但可能會裁剪掉部分圖像。當屬性background-size的值為contain時,背景圖像會完全顯示出來,但可能不會完全覆蓋背景區域。
舉例3:自適應元素大小的背景圖片
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS3 background-size屬性</title>
<style type="text/css">
#control
{
margin-bottom:10px;
}
#view
{
border:1px solid red;
width:60px;
height:40px;
background-image:url("../App_images/lesson/run_css3/css3.png");
background-size:cover;
}
</style>
<script src="../App_js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#range_width").change(function () {
var num = $(this).val();
$("#value_width").text(num+"px");
$("#view").css("width", num + "px");
});
$("#range_height").change(function () {
var num = $(this).val();
$("#value_height").text(num+"px");
$("#view").css("height", num + "px");
});
})
</script>
</head>
<body>
<div id="control">
寬度:<input id="range_width" type="range" min="60" max="300" value="60"/><span id="value_width">60px</span><br />
高度:<input id="range_height" type="range" min="40" max="200" value="40"/><span id="value_height">40px</span>
</div>
<div id="view"></div>
</body>
</html>
在浏覽器預覽效果如下:
分析:
這裡使用的背景圖片實際大小為120px×80px。不過由於使用“background-size:cover;”使得不管元素實際寬度和高度如何變化,背景圖片都會自適應元素的大小。
注意:此例子請在火狐浏覽器下測試,否則無法查看動態效果。
疑問1、對於背景圖片,不是可以使用width和height屬性來設置嗎?為什麼還要增加一個background-size屬性呢?
記住,背景圖片不同於img標簽引用的圖片,對於img標簽引用的圖片,我們可以使用width和height屬性來設置,但是這兩個屬性不能用於設置背景圖片的大小。因此,在CSS3中,引入了background-size屬性來設置背景圖片的大小。這裡大家要清楚一點,背景圖片的大小跟一般圖片的大小設置有本質的區別。