這一篇要介紹的是:CSS 的漸層(gradient)
以下都以此 codepen 做範例
https://codepen.io/saffranwang/pen/byRxwd
- css 漸層是屬於「圖片
background-image
」,而不是「色彩background-color
」
因此,漸層「無法使用 transition
效果」
- 「圖片
background-image
」不會產生漸變 - 「色彩」才會產生漸變
漸層分為兩大類
第一類漸層:線性漸層(linear-gradient
)
漸層預設是「從上到下」
1 | .bg-1{ |
旋轉角度
有兩種方式:
- 加入「角度
90deg
」
1 | .bg-1{ |
- 加入「方向性的指引
to right
」
1 | .bg-1{ |
第二類漸層:放射狀漸層(radial-gradient
)
「多層重疊」的 background
background
是可以做「多層重疊的」,放兩個以上的背景圖
範例
- 兩層
linear-gradient
重疊,用「線性漸層」製作出「放射狀漸層」的效果 - 兩個
linear-gradient
用「逗號」隔開- 第一段:由上到下
- 第二段:由左到右
設定「距離」
除了「顏色」,還可以設定另一個屬性:「距離」
rgba(232, 12, 122, 0.5)
這個顏色沒有設定「距離」,就會從「距離 = 0」的地方開始transparent 70%
這裡設定了「70%
」,就會從「距離 = 70%」開始變透明
1 | .bg-2{ |
- 如果將第一個顏色設定為
green 40%
1 | .bg-2{ |
「多個圖樣」的效果
- 因為「漸層」是「圖片」,所以可以給它設定「尺寸
background-size
」 - 兩個漸層,分別給它設定尺寸,中間用「逗號」隔開
1 | .bg-3{ |
用「漸層」畫出「銳利的邊線」
「下一個顏色」直接跟「上一個顏色」做「距離的重疊」,就可以做出銳利的邊線效果
範例一(使用linear-gradient
)
做出「銳利邊線」的原理,請看下圖說明
1 | .bg-7{ |
範例二(使用radial-gradient
)
1 | .bg-4{ |
❗️
[第一段說明]
1 | radial-gradient(#fff 30%, transparent 30%, |
#fff 30%
--> 前「30%」都是「很均勻的白色,沒有漸層」- 「白色」從「30% 的位置」要「開始漸層」時,立刻轉為「透明」(
transparent 30%
-->transparent
從 30% 的位置開始) - 利用以上的原理,就會把「漸層效果」給完全遮蓋住,製造出「銳利的邊線」
❗️
[第二段說明]
1 | transparent 60%, #fff 60%); |
transparent 60%
--> 從 30%~60% 一直維持著「均勻的透明」(才能露出background-color: teal;
),transparent
從 60% 要「開始漸層」時,立刻轉「白色」(#fff 60%
-->#fff
從 60% 的位置開始)
重複圖樣效果
利用上面「銳利邊線」的概念:用一段一段的顏色,畫出「接近銳利」的邊線,一圈一圈的畫出來,製作出下面的圖樣效果
1 | .bg-5{ |
旋轉效果(轉盤)
- 「漸層」雖然不能做到「淡入淡出」的效果,但是可以做出類似「旋轉」的效果
只需要用到一個div
,就可以做出轉盤了
- 利用「很多塊色彩,畫出銳利的邊線」來組出來的,有設定了「角度、顏色、size 等等」
- 一個圓 = 360度,切成 8 塊 --> 360/8 = 一塊45度
css:
1 | .bg-6{ |
設定「角度」
如果想要更細膩的調整「漸層的方向」,就可以使用「角度」來取代「方向關鍵字」(方向關鍵字 例如:to bottom, to top, to right, to left, to bottom right 等等)
Syntax
1 | background-image: linear-gradient(angle, color-stop1, color-stop2); |
這裡的「角度」是指:「水平線」與「漸層方向」之間的角度
範例一(沒有設定角度)
css:
1 | .bg-7{ |
沒有設定角度,漸層就會按照「預設的方向」由上到下
範例二(設定 45 度)
css:
1 | .bg-7{ |
設定 45deg,「水平線」與「漸層方向」之間的角度 = 45 deg
範例三
css:
1 | #grad { |
範例網址:
https://www.w3schools.com/css/tryit.asp?filename=trycss3_gradient-linear_angles
書中範例一
http://dabblet.com/gist/4b4ad05f4c1b5259066f
- 只有使用「線性漸層」,每個線性漸層都只有小小一塊
以往在做這種條紋背景,都要用到圖片。但如果用此範例的方式,用漸層來做的話,就不需要另外匯入圖片了。
書中範例二
http://dabblet.com/gist/e3cfcb094e65d85df847
- 也是使用「線性漸層」
範例:可縮放的背景圖
https://codepen.io/Wcc723/pen/BEbejQ
- 一個背景圖片,中間被裁掉一塊
只需要用到一個div
,就可以做出來
here!!