background 屬性是用來聲明元素的背景,它可以大到網頁整個背景,也可以設定一個一個區塊的背景,或是小到像<button>
、<a>
都可以使用background屬性來聲明背景樣式。背景可以填單色,也可以做漸層色,或是引入一張圖片來當背景。它們各自有其相應的屬性及屬性值(參數):
background-color
單色的背景,可以用各種色碼(Hex、RGB、HSL)作為屬性值。
1 | body { |
background-image
-
url()
引入圖片當背景,括弧內寫入相對定位或絕對定位路徑。1
2
3body {
background-image: url(./image/cloud.png);
}圖片的大小是225*225px,它會自己去填滿body的寬高。(因為background-repeat的預設值是repeat。)
-
linear-gradient
用漸層設背景-
漸變方向
值得注意的是,漸層背景是屬於 background-image 的範疇,而不是 background-color,這是新手常犯的錯誤。
linear-gradient 的語法是:1
2linear-gradius( 方向 direction, 顏色 color )
linear-gradient( [ <angle> | to <side-or-corner> ,] <color-stop-list> )方向可以用方位名稱( top、right、bottom、left )來表示;也可以用角度( deg,degree )來表示。
它的原理是透過 gradient 軸來漸變不同的顏色,與 gradient 軸垂直的兩端是起點顏色與終點顏色。(該圖擷取自MDN
gradient 軸的角度是從下方 (bottom) 算起,所以 0deg 的顏色起始點是下方 (bottom) ,終點是上方 (top) ; 90deg 起點是左方 (left),終點是右方 (right) ; 以此類推。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19div {
width: 300px;
height: 100px;
}
.block1 {
background-image: linear-gradient( 0deg , green, yellow);
/* 等同於 */
background-image: linear-gradient( to top , green, yellow);
}
.block2 {
background-image: linear-gradient( 270deg, green, yellow);
/* 等同於 */
background-image: linear-gradient( to left , green, yellow);
}
.block3 {
background-image: linear-gradient( 150deg, green, yellow);
/* 等同於 */
background-image: linear-gradient( to bottom left , green, yellow);
}
-
漸變比例分配
如果想要讓顏色晚一點變漸層,是可以透過比例分配來調整的,只要在顏色後方聲明單位或比例就可以了。若沒有聲明,就會平均分配各個顏色所佔的區域。
1
2
3.block-average {
back ground-image: linear-gradient( 90deg, yellow, green, orange);
}1
2
3.block-proportion {
back ground-image: linear-gradient( 90deg, yellow 50%, green, orange);
}
點看更多的linear-gradient屬性值。
-
background-repeat
用來聲明背景圖片是否重複、如何重複顯示。
單值語法:
1 | background-repeat: repeat-x; /*水平重複*/ |
雙值語法: 水平 | 垂直
1 | background-repeat: repeat space; |
-
repeat
(預設值)1
2
3
4body {
background-image: url(./image/cloud.png);
background-repeat: repeat;
} -
no-repeat
1
2
3
4
5body {
background-color: #fff8d8;
background-image: url(./image/cloud.png);
background-repeat: no-repeat;
}點看更多background-repeat。
background-size
用來聲明背景圖片的大小。
-
contain
contain 值是不超過原圖的大小這個前提下,等比縮小到符合容器大小,不加以裁切或伸展,通常用在圖比容器大的時候。以下面的例子來說,圖片是1000*677,而容器是300*200,為了不裁切到圖片,圖片會等比縮到約299*200。1
2
3
4
5
6div {
width: 100%;
height: 300px;
background-image: url(./image/cloud.png);
background-size: contain;
} -
cover
cover 值是等比例縮放,讓圖片可以蓋滿元素寬高,若因為比例與元素不均等,導致寬度或高度超過,就會裁切。以同樣的圖片為例,圖片是 1000*677,<div>
佔滿瀏覽器寬度約 1280。圖片為了蓋滿寬高,會等比放大成約 1280*866 的大小,高度高過 300px 的部分都會被裁切掉。1
2
3
4
5div {
height: 300px;
background-image: url(./image/cloud.png);
background-size: cover;
} -
單位與數值
也可以用單位與數值來設定背景圖片的大小。它可以只設定寬,並讓高自動符合比例 ; 或是反過來 ; 或是寬高都設值,如此一來圖片將失去本來的比例,導致失真。1
2
3
4
5
6body {
width: 100%;
height: 300px;
background-image: url(./image/cloud.png);
background-size: 50% 200px;
}