HTML特效篇-2、背景顏色的漸變
漸變通常是一種顏色逐漸淡入另一種顏色,但是CSS允許你控制顏色發生的各個方面,從方向和形狀到顏色以及它們如何從一種過渡到另一種。實際上,存在三種類型的漸變:
線性漸變
徑向漸變
圓錐形漸變
三種漸變對應的語法是:
/* Basic linear gradient examples */ background-image: linear-gradient(#ff8a00, #e52e71); background-image: linear-gradient(to right, violet, darkred, purple); background-image: linear-gradient(40deg, rgb(255 0 0) 60%, orange);/* Basic radial gradient examples */ background-image: radial-gradient(#ff8a00, #e52e71); background-image: radial-gradient(circle at top right, #ff8a00, red, #e52e71); /* Basic conic gradient examples */ background-image: conic-gradient(#ff8a00, #e52e71); background-image: conic-gradient(red 50deg, yellow 100deg, lime 200deg, aqua, blue, magenta, red);
下面來分別為大家講講這三種漸變。
線性漸變
這也許是我們在網頁設計中看到的最常見的漸變方案了(linear-gradient())。之所以稱它為“線性漸變”,是因為顏色是從左到右,從上到下或沿著單個方向選擇的任何角度流動的。
語法:
實現漸變的方法就是在css中的 background 或 background-image屬性宣告。
也就是建立一個背景影象,該背景影象是線性漸變,以[朝這個方向或角度]移動,
並以[一種顏色]開始,以[另一種顏色]結束。
官方語法:
linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> ) <side-or-corner> = [to left | to right] || [to top | to bottom]
實踐:
我們來做一個從頂部到底部的漸變圖案。
.gradient { background-image: linear-gradient(#ff8a00, #e52e71); }
上面的程式碼中,我們並沒有宣告角度或漸變方向。CSS將 to bottom在這種情況作為預設,其中 #ff8a00 的起始顏色是過渡到 #e52e71.
上面的是簡寫,我們也可以寫成這樣:
/* 宣告方向 */ background-image: linear-gradient(to bottom, #ff8a00, #e52e71); /* 角度宣告 */ background-image: linear-gradient(180deg, #ff8a00, #e52e71);
漸變方向
為了使顏色變化從左到右,我們在 linear-gradient() 函式的開頭傳遞了一個附加引數,以 to 指示方向的單詞開頭。讓我們將屬性值分成幾行,以便輕鬆地瞭解發生了什麼。
.gradient { background-image: linear-gradient( to right, #ff8a00, #e52e71 ); }
一個顏色從元素的左邊緣過渡到右邊緣就搞定了。
to 語法也適用於轉角。例如:如果你希望漸變的軸從左下角到右上角,則可以宣告:
to top right
.gradient { background-image: linear-gradient( to top right, #ff8a00, #e52e71 ); }
如果要漸變的區域是一個正方形,則可以宣告漸變的角度為 45deg。
.gradient { background-image: linear-gradient( 45deg, #ff8a00, #e52e71 ); }
多種顏色的漸變
我們不僅限於兩種顏色的變化。實際上,我們可以根據需要來用逗號分隔多種顏色。
.gradient { background-image: linear-gradient( to right, red, #f06d06, rgb(255, 255, 0), green ); }
上面是四種顏色的漸變:
那麼線性漸變就講到這裡。
徑向漸變
徑向漸變與線性漸變的不同之處在於,它是從一個點開始並向外散發的。漸變通常用於模擬光源,我們知道它並不是筆直的。這使得徑向漸變中的顏色之間的過渡顯得更加自然。
語法:
在background或background-image屬性中使用 radial-gradient()函式就可以了。
官方語法:
radial-gradient(
[ <ending-shape> || <size> ]? [ at <position> ]? ,
<color-stop-list>
);
指定漸變的中心、形狀(圓形或橢圓形)、大小。預設情況下,漸變的中心是 center(表示在中心點),漸變的形狀是 ellipse(表示橢圓形),漸變的大小是 farthest-corner(表示到最遠的角落)。
用法:
.gradient { background-image: radial-gradient( #ff8a00, #e52e71 ); }
上面定義一個最基本的徑向漸變,我們不宣告 shape, size, position 和 color-top 值。
改變形狀:
我們可以看到上面的圖形,shape 是 ellipse(預設)。那是因為元素本身不是一個完整的正方形,在那種情況下,它會假設一個 circle。如果我們宣告circle 為該shape值,看看會發生什麼:
.gradient { background-image: radial-gradient( circle, #ff8a00, #e52e71 ); }
改變位置
我們可以看到,上面演示的漸變都是圓形的,並且一直沿著最遠的邊緣逐漸淡入最終顏色。我們可以顯式宣告 position 值。以確保淡入淡出以 close-side 的 shape 方式結束。
.gradient { background-image: radial-gradient( circle closest-side, #ff8a00, #e52e71 ); }
其中position的值可以為:closet-corner, closetside,farthest-corner和farthest-side。
徑向漸變其實不一定從預設中心開始,它可以通過 at 用作第一個引數的一部分來指定某個點。例如:
.gradient { background-image: radial-gradient( circle at top right, #ff8a00, #e52e71 ); }
看效果:
徑向漸變就講到這裡。
圓錐漸變
圓錐漸變類似於徑向漸變。兩者都是圓形,並且使用元素的中心作為色標的源點。但是,如果徑向漸變的色標從圓的中心出發,則圓錐漸變會將它們放在圓周圍。
之所以稱它們為“圓錐形”,是因為它們看起來像從上方觀察的圓錐形。
語法:
conic-gradient(
[ from <angle> ]? [ at <position> ]?,
<angular-color-stop-list>
)
用法:
在最基本的水平上
.gradient { background-image: conic-gradient( #ff8a00, #e52e71 ); }
假設漸變的位置從元素(50%,50%)的正中心開始,並且均勻分佈在兩個顏色值之間。
其他的寫法:
.gradient { /* Original example */ background-image: conic-gradient(#ff8a00, #e52e71); /* Explicitly state the location center point */ background-image: conic-gradient(at 50% 50%, #ff8a00, #e52e71); /* Explicitly state the angle of the start color */ background-image: conic-gradient(from 0deg, #ff8a00, #e52e71); /* Explicitly state the angle of the start color and center point location */ background-image: conic-gradient(from 0deg at center, #ff8a00, #e52e71); /* Explicitly state the angles of both colors as percentages instead of degrees */ background-image: conic-gradient(#ff8a00 0%, #ff8a00, #e52e71); /* Explicitly state the angle of the starting color in degrees and the ending color by a full turn of the circle */ background-image: conic-gradient(#ff8a00 0deg, #e52e71 1turn); }
如果我們不為顏色指定一個角度,則梯度的顏色是從 0deg 開始 360deg 結束的。如果我們引入第三個值,那麼將建立了一個更平滑的漸變,並且我們開始獲得那種酷似錐形的透檢視。
建立一個平滑的漸變
.gradient { background-image: conic-gradient( #ff8a00, #e52e71, #ff8a00 ); }
在玩轉圓錐形漸變上,我們可以使用它來創建於拾色器圖案:
.conic-gradient { background-image: conic-gradient( red, yellow, lime, aqua, blue, magenta, red ); }
或者我們通過三個顏色值畫一個簡單的餅圖。
.gradient { background-image: conic-gradient( lime 40%, yellow 0 70%, red 0 ); }
由於錐形漸變見的比較少,給大家看看瀏覽器支援情況吧!
迴圈漸變
重複漸變是我們可以通過創造性地使用color-stops
onlinear-gradient()
和radial-gradient()
符號來完成的一項技巧,併為我們投入使用。這個想法是,我們可以從建立的漸變中建立圖案,並允許它們無限迴圈。
語法
共有三種重複梯度,官方規範目前支援所有三種,當前工作草案中則支援一種。每個符號的語法與其相關的漸變型別相同。例如,repeating-linear-gradient()
遵循與相同的語法linear-gradient()
。
迴圈漸變 | 對應型別 | 使用方法 |
repeating-linear-gradient | linear-graadient | repeating-linear-gradient(45deg, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px); |
repeating-radial-gradient | radial-gradient | repeating-radial-gradient(#ff8a00 0 8%, #e52e71 8% 16%); |
repeating-conic-gradient | conic-gradient | repeating-conic-gradient(from 0deg, #ff8a00 0deg 30deg, #e52e71 30deg 60deg); |
用法:
建立一個重複的線性漸變,它每隔10個畫素以45度角在兩種顏色之間交替變化:
.gradient { background-image: repeating-linear-gradient( 45deg, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px ); }
我們可以做同樣的事情,但是要有一個徑向梯度。區別?除了符號本身,我們還定義形狀和起點:
.gradient { background-image: repeating-radial-gradient( circle at 0 0, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px ); }
圓錐漸變沒有太大的不同!同樣,徑向和圓錐形漸變之間的最大區別是圓錐形顏色在元素周圍過渡,其中徑向漸變中的顏色從漸變源的中心過渡。
.gradient { background-image: repeating-conic-gradient( from 0deg, #ff8a00 0deg 30deg, #e52e71 30deg 60deg ); }
一些例子:
當我們檢視重複的漸變時,我們看到了漸變如何建立有趣的圖案。但是我們可以建立許多其他模式!像棋盤一樣
.gradient-pattern { background-color: #fff; background-image: linear-gradient( 45deg, #333 25%, transparent 25%, transparent 75%, #333 75%, #333 ), linear-gradient( -45deg, #333 25%, transparent 25%, transparent 75%, #333 75%, #333 ); background-size: 50px 50px; height: 250px; }
我們還可以製作一個重複的V形圖案:
.gradient-pattern { background: linear-gradient(135deg, #333 25%, transparent 25%) -50px 0, linear-gradient(225deg, #333 25%, transparent 25%) -50px 0, linear-gradient(315deg, #333 25%, transparent 25%), linear-gradient(45deg, #333 25%, transparent 25%); background-size: 100px 100px; background-color: #ff8a00; height: 250px; }
今天就先講到這吧!