一篇文章帶你瞭解CSS3 背景知識

CSS3中包含幾個新的背景屬性,提供更大背景元素控制。

一、瀏覽器支持

表中的數字指定完全支持該屬性的第一個瀏覽器版本。

數字後面的 -webkit- 或者 -moz- 使用時需要指定前綴。

屬性 Chrome Firefox Safari Opera IE
background-image (多背景) 4.0 9.0 3.6 3.1 11.5
background-size 4.0 1.0 -webkit- 9.0 4.0 3.6 -moz- 4.1 3.0 -webkit- 10.5 10.0
background-origin 1.0 9.0 4.0 3.0 10.5
background-clip 4.0 9.0 4.0 3.0 10.5

二、CSS3 多背景

CSS3允許你爲一個元素添加多個背景圖像, 通過使用 background-image 屬性.不同的背景圖像用逗號隔開,圖像疊加在一起,

例:有兩個背景圖像,第一圖像是背景圖(在右下角)和第二圖像是一個GIF動圖(在左上角)。

代碼如下:

<!DOCTYPE HTML>
<meta charset="utf-8">
<title>項目</title>
<head>
<style>
    #example1 {

    background-image: url(img/fy_indexBg.jpg), url(img/17I_hd.mp4.gif);
    background-position: right bottom, left top;
    background-repeat: no-repeat, repeat;
}
</style>
</head>
<html>

<body>
 <div id="example1">
    <h1>Lorem Ipsum Dolor</h1>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
    <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>
</body>

</html>

可以使用單獨的背景屬性(如上所示)或背景簡寫屬性指定多個背景圖像。

下面的例子使用了背景速記

上面的例子,有相同的結果)

#example1 {
    background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
}

1. CSS3 背景尺寸

CSS3 background-size 屬性允許你指定背景圖像的尺寸.

在CSS3之前的背景圖像大小是圖像的實際大小。CSS3允許我們使用背景圖像在不同的上下文中。

size可以指定長度、百分比,或通過使用一個關鍵詞: contain 或者 cover.

示例:圖片背景圖像比原圖像小得多(以像素爲單位):

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>項目</title>
  <style>
    #example1 {
        border: 1px solid black;
        background:url(img_flwr.gif);
        background-repeat: no-repeat;
        padding:15px;
    }

    #example2 {
        border: 1px solid black;
        background:url(img_flwr.gif);
        background-size: 100px 80px;
        background-repeat: no-repeat;
        padding:15px;
    }
</style>
</head>
<body>

  <p>原背景:</p>
  <div id="example1">
    <h2>Lorem Ipsum Dolor</h2>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
    <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>

  <p>縮放背景圖:</p>
  <div id="example2">
    <h2>Lorem Ipsum Dolor</h2>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
    <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>

</body>
</html> 

background-size 屬性兩個可能值是:containcover.

含有關鍵詞尺度的背景圖像儘可能大的(但它的寬度和高度必須在內容區域)。因此,根據背景圖像的比例和背景區的定位,有可能不被背景圖像覆蓋。

cover 關鍵詞縮放背景圖像,內容區域完全覆蓋了背景圖像(它的寬度和高度等於或超過該範圍的內容)。因此,背景圖像的某些部分可能不在背景區的定位是可見的。

下面的示例演示了使用containcover

#div1 {
    background: url(img_flower.jpg);
    background-size: contain;
    background-repeat: no-repeat;
}
#div2 {
    background: url(img_flower.jpg);
    background-size: cover;
    background-repeat: no-repeat;
}

2. 定義多個尺寸的背景圖像

background-size 屬性也接受多個背景值(使用逗號分隔列表),當處理多個背景時。

下面的示例指定三個背景圖像,每個圖像具有不同的background-size值:

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>項目</title>
        <style>
            #example1 {
                background: url(img/fy_indexBg.jpg) left top no-repeat, url(img/fy_indexBg.jpg) right bottom no-repeat, url(img/17I_hd.mp4.gif) left top repeat;
                padding: 15px;
                background-size: 50px, 130px, auto;
                color: white;
            }
</style>
    </head>

    <body>

        <div id="example1">
            <h1>Lorem Ipsum Dolor</h1>
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
            <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
        </div>

    </body>

</html>


3. 全尺寸的背景圖片

如果希望在一個覆蓋整個瀏覽器窗口的網站上有一個背景圖像。.

要求如下:

填滿整個頁面的圖像(沒有空白)

  1. 縮放圖像

  2. 圖像居中頁面

  3. 沒有滾動條

下面的示例演示如何使用HTML元素(HTML元素始終是瀏覽器窗口的高度)。然後設置一個固定中心的背景上。然後用background-size屬性調整它的大小:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>項目</title>
  <style>
    html {
      background: url(img/fy_indexBg.jpg) no-repeat center fixed;
      background-size: cover;
    }
</style>
</head>
<body>

  <h1>整個頁面背景圖</h1>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
    suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>

</body>
</html>


三、屬性

1. background-origin 屬性

CSS3 background-origin 屬性指定在背景圖像定位在哪裏.

這個屬性有三個不同的值:

border-box :背景圖像從邊框的左上角開始。

padding-box :(默認)背景圖像從左上角的填充邊緣。

content-box :背景圖像從左上角的內容

下面的例子說明了background-origin屬性:

#example1 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
    }

    #example2 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
        background-origin: border-box;
    }

    #example3 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
        background-origin: content-box;
    }

完整代碼:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>編程字典</title>
  <style>
    #example1 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
    }

    #example2 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
        background-origin: border-box;
    }

    #example3 {
        border: 10px solid black;
        padding: 35px;
        background: url(img/fy_indexBg.jpg);
        background-repeat: no-repeat;
        background-origin: content-box;
    }                
</style>
</head>
<body>

  <p>沒有 background-origin (padding-box 默認):</p>
  <div id="example1">
  <h2>Lorem Ipsum Dolor</h2>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
  <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: border-box:</p>
  <div id="example2">
  <h2>Lorem Ipsum Dolor</h2>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
  <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>

  <p>background-origin: content-box:</p>
  <div id="example3">
  <h2>Lorem Ipsum Dolor</h2>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
  <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  </div>

</body>
</html>

2. background-clip 屬性

CSS3 background-clip 屬性指定背景的繪製面積.

該屬性有三個不同的值:

border-box - (默認) 背景是畫的邊框外邊緣 padding-box-背景被顯示到填充物的外緣。content-box - 背景是畫在內容框內

下面舉例演示了background-clip屬性:

#example1 {
    border: 10px dotted black;
    padding: 35px;
    background: yellow;
    background-clip: content-box;
}

四、總結

本文主要介紹了CSS背景,通過CSS實現多背景顯示,自定義某一些尺寸顯示格式,background-origin等多個屬性的應用,豐富的案例幫助大家更好的理解。

希望大家自己去嘗試一下,實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,纔可以理解的更加深刻。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章