1. 程式人生 > >完美的背景圖全屏css程式碼 – background-size:cover?

完美的背景圖全屏css程式碼 – background-size:cover?

在寫主題樣式的時候經常會碰到用背景圖鋪滿整個背景的需求,這裡分享下使用方法

需要的效果

  1. 圖片以背景的形式鋪滿整個螢幕,不留空白區域
  2. 保持影象的縱橫比(圖片不變形)
  3. 圖片居中
  4. 不出現滾動條
  5. 多瀏覽器支援

以圖片bg.jpg為例

最簡單,最高效的方法 CSS3.0

歸功於css3.0新增的一個屬性background-size,可以簡單的實現這個效果,這裡用fixed和center定位背景圖,然後用background-size來使圖片鋪滿,具體css如下

  1. html {
  2.   backgroundurl(bg.jpg) no-repeat center center fixed;
  3.   -webkit-background
    -size: cover;
  4.   -moz-background-size: cover;
  5.   -o-background-size: cover;
  6.   background-size: cover;
  7. }

這段樣式適用於以下瀏覽器

  • Safari 3+
  • Chrome
  • IE 9+
  • Opera 10+ (Opera 9.5 支援background-size屬性 但是不支援cover)
  • Firefox 3.6+

這裡你會發現ie8及以下版本不支援,這些蛋疼瀏覽器則需要新增下面的css來設定相容

  1. filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src
    ='.bg.jpg', sizingMethod='scale');
  2. -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')";

這個用濾鏡來相容的寫法並不是很完美,首先是圖片路徑,這裡只能是相對於根目錄的路徑,或者用絕對路徑;然後是圖片縱橫比改變了,是拉伸鋪滿的形式。儘管如此,總比留空白好多了吧(如果背景圖bg.jpg的寬高夠大,則可以不用這段,變成簡單的平鋪,比圖片變形效果好寫,大家可以嘗試下)

如果你覺得上面的方法不是很滿意,那試試下面這種

用img形式來實現背景平鋪效果

首先在html中加入以下程式碼

  1. <img src="bg.jpg" class="bg">

然後通過css來實現鋪滿效果(假設圖片寬度1024px)

  1. img.bg {
  2.     min-height: 100%;
  3.     min-width1024px;
  4.     width: 100%;
  5.     heightauto;
  6.     positionfixed;
  7.     top: 0;
  8.     left: 0;
  9. }

下面這個是為了螢幕小於1024px寬時,圖片仍然能居中顯示(注意上面假設的圖片寬度)

  1. @media screen and (max-width1024px) {
  2.   img.bg {
  3.     left: 50%;
  4.     margin-left: -512px;
  5.   }
  6. }

相容以下瀏覽器

  • 以下瀏覽器的所有版本: Safari / Chrome / Opera / Firefox
  • IE9+
  • IE 7/8: 平鋪效果支援,但是在小於1024px的螢幕下居中效果失效

下面再說一種方法

JQ模擬的方法

html部分

  1. <img src="bg.jpg" id="bg" alt="">

css部分

  1. #bg { positionfixedtop: 0; left: 0; }
  2. .bgwidth { width: 100%; }
  3. .bgheight { height: 100%; }

js部分

  1. $(window).load(function() {
  2.     var theWindow        = $(window),
  3.         $bg              = $("#bg"),
  4.         aspectRatio      = $bg.width() / $bg.height();
  5.     function resizeBg() {
  6.         if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
  7.             $bg
  8.                 .removeClass()
  9.                 .addClass('bgheight');
  10.         } else {
  11.             $bg
  12.                 .removeClass()
  13.                 .addClass('bgwidth');
  14.         }
  15.     }
  16.     theWindow.resize(resizeBg).trigger("resize");
  17. });

支援瀏覽器

  • 以下瀏覽器的所有版本: Safari / Chrome / Opera / Firefox
  • IE7+

其實我自己一般用的是(因為夠用了,咱不挑/其實上面的都是俺翻譯過來的)

html部分

  1. <div class="bg"></div>

css部分

  1. .bg{
  2.     positionfixed;
  3.     top: 0;
  4.     left: 0;
  5.     width: 100%;
  6.     height: 100%;
  7.     backgroundurl(bg.jpg) no-repeat #000;
  8.     background-size: cover;
  9.     z-index: -1;
  10. }

如果圖片寬度沒有達到1900px以上,我會加上ie的濾鏡來支援ie8(這裡我故意用了絕對路徑,請知曉,程式碼長的我想砸了ie)

  1. -ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.http://huilang.me/bg.jpg', sizingMethod='scale')";
  2. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://huilang.me/bg.jpg', sizingMethod='scale');

瀏覽器支援

  • ie7+
  • 絕大多數主流瀏覽器
  • 長按圖片識別圖中二維碼(或搜尋微信公眾號FrontEndStory)關注“前端那些事兒”,帶你瞭解最新的前端技術。


相關推薦

完美背景css程式碼background-size:cover?

在寫主題樣式的時候經常會碰到用背景圖鋪滿整個背景的需求,這裡分享下使用方法 需要的效果 圖片以背景的形式鋪滿整個螢幕,不留空白區域保持影象的縱橫比(圖片不變形)圖片居中不出現滾動條多瀏覽器支援 以圖片bg.jpg為例 最簡單,最高效的方法 CSS3.0 歸功於css

通過 background-sizecover 實現背景

在寫主題樣式的時候經常會碰到用背景圖鋪滿整個背景的需求,這裡分享下使用方法 需要的效果 1、圖片以背景的形式鋪滿整個螢幕,不留空白區域 2、保持影象的縱橫比(圖片不變形) 3、圖片居中 4、不出現滾動條 5、多瀏覽器支援 以圖片bg.jpg為例 最簡單,最高效的方法

CSS 背景圖片顯示

<style> html { background: url(./static/login/xia.jpg) no-repeat center center fixed; -webkit-background-size: cover; -mo

css背景圖片鋪滿自適應

                background-image: url('images/bg.jpg');           &n

jquery動態背景切換登錄插件supersized.js

fire 居中 -o 單擊 暫停 BE between dede hover 下載地址:https://download.csdn.net/download/t101lian/10434198 預覽: http://www.daimabiji.com/codedemo/

酷炫字體背景的實現——神奇的background-clip: text

rep ima ice ack code 酷炫 chrom -s 關系   愉快的時光總是飛快,七天小長假已接近尾聲,抓住假期的尾巴,再學個新知識點——css的background-clip: text屬性...會不會有種陌生的感覺,畢竟在我們的印象裏,background

酷炫字型背景的實現——神奇的background-clip: text

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>

瀏覽器開啟就是程式碼說明

現在還沒有發現通用的JS程式碼。 對於IE,可以通過下面的程式碼處理: 第一步: <script> window.onload=function(){                 var wscript = new ActiveXObject("WScrip

Bootstrap CSS 背景 自適應顯示

效果圖:    {         background: url("../img/5.jpg") ;         background-position: center 0;           background-repeat: no-repeat;  

CSS實現響應式背景

  當前很流行的一種網頁形式就是滿屏大圖,本文將用最簡單的方式實現該效果。用到了CSS 屬性background-size ,無需javascript。   核心概念   使用background-size 屬性,填充整個viewport   當css屬性

背景鋪滿程式碼

 filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(         src='http://static.gcimg.net/i/

css基礎 background-attachment 背景是固定的,不隨內容的滾動而滾動

utf-8 背景 基礎 gpo -a logs col 且行且珍惜 mage 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   

背景適應

background: url("images/img1.jpg") no-repeat; background-size:100% 100%; background-attachment: fixed; width: 100%; height: 100%; position: fixed; top

關於移動端響應式背景顯示的問題

十一國慶期間,公司要做一個活動,設計部交過來一張圖,只有一個按鈕需要我敲,其他部分只有一張圖,如下 完整設計稿 切圖如下: 設計稿寬是1875px 以下為html程式碼: <div class="box" style="background-ima

HTML5基礎加強css樣式篇(背景大小設定:background-size)(三十九)

1.background-size屬性: <!DOCTYPE html> <html lang="en"> <head> <meta charset=

用element-ui的走馬燈carousel輕鬆實現自適應banner 解決el-carousel預設高度300問題 元件程式碼

用element-ui的走馬燈carousel輕鬆實現自適應全屏banner圖 解決el-carousel預設高度300問題  元件程式碼     <template> <el-carousel :interval="2000" i

Visual Studio 2013背景主題小外掛的製作

不說別的,先上圖 一、前話        Visual Studio的Extensions and Updates裡邊有一個外掛叫做Kynnyun Background的,可以支援向VS的Editor中新增背景圖片,但是並不能做出這種全屏的效果。

背景,左右兩邊顏色不一樣,DIV+CSS 佈局

html { overflow-x:hidden;} body{ margin:0; padding:0;} #top{ width:100%; position:relative; height:50px;} #content{ width:980px; m

CSS背景圖片自適應、、填充、拉伸

方法一、js控制:123<div id="formbackground" style="position:absolute; width:100%; height:100%; z-index:-1">  <img src="pictures/background.jpg" height="1

背景圖片居中自適應顯示

center posit attach mage back 背景圖 自適應 rep sse .bg{ background-size: cover;background-image:url(../assets/images/sunshine.png);background-