通過 background-size:cover 實現背景圖全屏
阿新 • • 發佈:2018-11-12
在寫主題樣式的時候經常會碰到用背景圖鋪滿整個背景的需求,這裡分享下使用方法
需要的效果
1、圖片以背景的形式鋪滿整個螢幕,不留空白區域
2、保持影象的縱橫比(圖片不變形)
3、圖片居中
4、不出現滾動條
5、多瀏覽器支援
以圖片bg.jpg
為例
最簡單,最高效的方法 CSS3.0
歸功於css3.0
新增的一個屬性background-size
,可以簡單的實現這個效果,這裡用fixed
和center
定位背景圖,然後用background-size
來使圖片鋪滿,具體css
如下
html {
background: url(bg.jpg) no-repeat center center fixed ;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
這段樣式適用於以下瀏覽器
- Safari 3+
- Chrome
- IE 9+
- Opera 10+ (Opera 9.5 支援background-size屬性 但是不支援cover)
- Firefox 3.6+
這裡你會發現ie8
及以下版本不支援,這些蛋疼瀏覽器則需要新增下面的css
來設定相容
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.bg.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')";
如果你覺得上面的方法不是很滿意,那試試下面這種
用img
形式來實現背景平鋪效果
首先在html
中加入以下程式碼
<img src="bg.jpg" class="bg">
然後通過css
1024px
)
img.bg {
min-height: 100%;
min-width: 1024px;
width: 100%;
height: auto;
position: fixed;
top: 0;
left: 0;
}
下面這個是為了螢幕小於1024px
寬時,圖片仍然能居中顯示(注意上面假設的圖片寬度)
@media screen and (max-width: 1024px) {
img.bg {
left: 50%;
margin-left: -512px;
}
}
相容以下瀏覽器
- 以下瀏覽器的所有版本: Safari / Chrome / Opera / Firefox
- IE9+
- IE 7/8: 平鋪效果支援,但是在小於1024px的螢幕下居中效果失效
下面再說一種方法
JQ
模擬的方法
html
部分
<img src="bg.jpg" id="bg" alt="">
css
部分
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
js
部分
$(window).load(function() {
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
function resizeBg() {
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg
.removeClass()
.addClass('bgheight');
} else {
$bg
.removeClass()
.addClass('bgwidth');
}
}
theWindow.resize(resizeBg).trigger("resize");
});
支援瀏覽器
- 以下瀏覽器的所有版本: Safari / Chrome / Opera / Firefox
- IE7+
其實我自己一般用的是(因為夠用了,咱不挑/其實上面的都是俺翻譯過來的)
html部分
<div class="bg"></div>
css部分
.bg{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(bg.jpg) no-repeat #000;
background-size: cover;
z-index: -1;
}
如果圖片寬度沒有達到1900px
以上,我會加上ie
的濾鏡來支援ie8
(這裡我故意用了絕對路徑,請知曉,程式碼長的我想砸了ie
)
-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.http://huilang.me/bg.jpg', sizingMethod='scale')";
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://huilang.me/bg.jpg', sizingMethod='scale');
瀏覽器支援
- ie7+
- 絕大多數主流瀏覽器