線性漸變linear-gradient的表達式:
linear-gradient( [<angle> | <side-or-corner>,]? <color-stop> [, <color-stop>]+);ide
看到線性漸變的表達式,又要開始用腦了,分拆開來其實很好理解。
先從幾個實際的表達式講起:測試
background-image:linear-gradient(#62C292 0%,#F8CBAD 100%); background-image:linear-gradient(0deg,#62C292 0%,#F8CBAD 100%); background-image:linear-gradient(top,#62C292 0px,#F8CBAD 100px); background-image:linear-gradient(90deg,#62C292 0%,#F8CBAD 50%,#62C292 100%); background-image:linear-gradient(90deg,#62C292 0%,#F8CBAD 25%,#62C292 50%,#F8CBAD 75%,#62C292 100%);
按上面來理解——
background-image:linear-gradient([角度或邊角,]x(0or1)+(顏色+空格+長度或百分比)+[(,顏色+空格+長度或百分比)xn(n>=1)]);spa
[角度或邊角,]*(0or1)
指firefox
[<angle>|<side-or-corner>,]?code
(顏色+空格+長度或百分比)
指圖片
<color-stop>字符串
[(,顏色+空格+長度或百分比)*n(n>=1)]
指it
[, <color-stop>]+class
我給出的表達式裏頭的「+」理解成字符串之間的合併就能夠了原理
不知道有沒有將你們繞暈,從一開始我就是這樣理解的。換一種簡單暴力點的——
「|」指「或(即or)」
「?」指「0或1」
「+」指「1個以上」
仍是從實際案例中來深刻理解,下面的測試結果都是基於firefox38.0
HTML中的body部分——
<div style='width:100px;border:4px solid #3B9768;margin:10px'> <p style='margin:5px;font-size:12px;text-align:center;'>0deg</p> <div style='height:90px;margin:5px;background-color:transparent;background-image:linear-gradient(0deg,#62C292 0%,#F8CBAD 100%);'></div> </div>
依次將裏頭的「0deg」替換成「45deg」、「90deg」、「135deg」、「180deg」。
結果爲——
線性漸變中的角度默認是從下到上的垂直方向開始順時針進行旋轉的。
先看一個多個漸變顏色的實例。
上圖是從左到右的水平漸變方向,知道了漸變的總長度和起始點,就能一一肯定<color-stop>的位置(由長度或百分比來決定),結合對應位置上的顏色就能夠知道上一個<color-stop>和下一個<color-stop>是如何發生顏色漸變的了。
水平和垂直方向的總長度直觀上很好理解,無疑是區塊背景的寬度或者是高度。若是是非水平和垂直的漸變角度,該如何肯定漸變的總長度呢?經過下圖來理解。
如圖所示,漸變的起點和終點在過中心的漸變線的垂直線上,給出一個區塊和漸變方向,就可以肯定漸變的起始點和總長度了,這樣有n個<color-stop>,就能夠劃分n-1個漸變區域了。
實例:
HTML中的body部分——
<div style='width:350px;height:220px;margin:5px;background-color:transparent;background-image:linear-gradient(135deg, #9DC3E6 0%, #F4B183 25%, #C9C9C9 50%, #FFD966 75%, #A9D18E 100%);'></div>
其實linear-gradient並不坑,理解了原理分分鐘玩轉漸變。