CSS 漸層是什麼,為什麼手寫容易寫壞
linear-gradient()、radial-gradient()、conic-gradient() 產生的不是顏色,而是一張由瀏覽器即時畫出來的圖片。 所以它要放進 background 或 background-image,不是 background-color。寫進 background-color 不會報錯,只會整條規則被忽略, 這是手寫漸層第一個踩到的坑。
第二個坑是角度。CSS 的 linear-gradient 以 0deg 指向正上方、順時針增加, 跟數學課的極座標方向相反,也不一定跟你的設計工具同一個基準。 與其在腦中換算,不如拉上面的滑桿看預覽,角度數字會同步印在標籤右邊。
第三個坑是顏色站的位置。某一站的百分比比前一站小的時候,瀏覽器不會報錯, 而是把它拉齊到前一站的位置,於是你得到一條硬邊界而不是過渡。 本頁在輸出前會先照位置由小到大排序,預覽與複製出來的那一行永遠一致。
三種漸層類型
- Linear(線性):從一端到另一端的直線過渡。最常用、Hero banner、卡片背景。 角度 0° = 由下到上、90° = 由左到右、180° = 由上到下。
- Radial(放射):從中心點向外擴散。光暈、聚焦效果、按鈕高光。
- Conic(圓錐):以中心點為軸,顏色繞圈旋轉。圓餅圖、彩虹、計時器圓環。
選 Radial 時角度滑桿會收起來,因為本頁的放射漸層固定畫成正圓(circle),沒有方向可以調。 選 Conic 時,滑桿的意思從「方向」變成「起始角度」,也就是顏色從哪裡開始繞。
從預設庫挑一個,再調成你要的
- 先在預設庫裡找最接近的一組。粉嫩、霓虹、夕陽、海洋、森林、晨曦六個色系, 點一下就整組套進預覽,比從兩個純色開始調快得多。
- 需要換形狀就改「漸層類型」。線性適合大面積背景,放射適合做光暈, 圓錐適合環狀的東西。
- 拉「方向角度」的滑桿。想要斜的就往 45° 或 135° 走,正橫正直看起來會比較呆板。
- 在下面的顏色站列表改顏色:左邊的色票可以直接點開系統調色盤, 旁邊的欄位收六位數的 hex(例如
#c1170c),再旁邊的數字是它在漸層上的位置百分比。 - 要更細緻的過渡就按「新增」多加一站,不需要的按右邊的垃圾桶移除。 最少要留兩站,所以只剩兩站時移除鈕會變成不可按。
- 預覽是即時的,最上面那一大塊色就是最終結果。滿意了再往下複製。
調一個不留接縫的圓錐漸層
- 把「漸層類型」切到 Conic(圓錐)。這時滑桿標籤會變成「起始角度」。
- 把第一站設在 0%、最後一站設在 100%,中間依你要的比例插站。圓錐漸層的百分比就是繞一圈的比例, 25% 正好是四分之一圈。
- 把第一站與最後一站設成同一個顏色,繞完一圈接回起點時才不會出現一條明顯的接縫。 彩虹色環與載入動畫的環都是這樣收尾的。
- 用「起始角度」把接縫轉到不礙眼的位置,例如轉到被圖示蓋住的那一側。
- 要做成環狀而不是實心圓餅,複製出來後在同一個元素上加
border-radius: 50%與一個遮住中心的內圈。
設計建議
- 顏色站不要超過 5 個:太多會雜亂,視覺重心散
- 45° / 135°:最好看的線性方向,避免水平垂直死板
- 同色系微差:subtle gradient(差 10-20 度色相)最現代
- 避免彩虹:除非真要鮮豔風
- 注意文字對比:漸層背景上的文字要選對比夠的色
把漸層帶走:CSS、Tailwind class 與分享連結
怎麼用 CSS
複製產出的程式碼貼進 CSS:
.hero {
background: linear-gradient(135deg, #c1170c 0%, #fbe3dd 100%);
/* 或:background-image: linear-gradient(...) */
}Tailwind 使用者:可以直接寫 bg-[linear-gradient(135deg,_#c1170c_0%,_#fbe3dd_100%)] (注意空格要改底線)。
三個按鈕各帶走什麼
- 複製 CSS:完整的一行
background: ...;,每一個顏色站都在裡面。要保留全部的站就用這一份。 - 複製 Tailwind:預設是 v4 寫法,線性輸出
bg-linear-135這種照角度寫的 class,放射是bg-radial-[circle],圓錐是bg-conic-45,再接from-[...]、via-[...]、to-[...]。專案還在 v3 就切到 v3,線性改成bg-gradient-to-*八個方向取最接近的那個,放射與圓錐輸出中括號的完整函式。顏色站超過三個時 Tailwind 的三段裝不下,兩個版本都改輸出bg-[...],每一站都保留。 - 分享連結:把目前的類型、角度、插值方式與所有顏色站寫進網址的查詢字串再複製起來。 貼到聊天室或工單裡,對方打開就是同一組漸層,不必再描述一次。
不同框架與不同地方的寫法差異
- Tailwind 的版本:v4 把線性漸層改名成
bg-linear-*,另外多了bg-radial與bg-conic,舊的bg-gradient-to-*還留著當相容名稱。v4 的漸層不寫修飾時在 oklab 內插,所以插值選「不指定」時本頁會在 class 後面加/srgb,顏色才跟預覽一樣。不確定專案版本就改用「複製 CSS」那一份。 - 插值色彩空間:CSS 預設在 sRGB 裡內插,紅配藍、藍配黃這種差很遠的兩色,中段常常發灰。選 oklab 中段會亮一些、乾淨一些;選 oklch 會沿色相環繞過去,中段最飽和。輸出會寫成
linear-gradient(135deg in oklch, ...)。Chrome 111、Firefox 127、Safari 16.2 起才認得,更舊的瀏覽器會把整行丟掉,要照顧就在前面多寫一行不帶插值的漸層當備援。 - CSS-in-JS 與樣式物件:React 的
style屬性要的是{ background: "linear-gradient(...)" },把複製出來那行的屬性名與分號去掉、值用引號包起來即可。 - 設計工具:設計稿標的角度不一定跟 CSS 同一個基準,直接照抄數字常常會轉錯方向。 以上面的預覽為準,或把 0° 朝上、順時針這件事先對齊再換算。
- 電子報與 HTML 信件:各家郵件用戶端對 CSS 的支援差很多,漸層是最容易失效的一類。 寄出去之前務必實測,或退回去用一張背景圖,並且保留一個純色的 fallback。
- 很舊的瀏覽器:
conic-gradient是三種裡面最晚普及的一個。要照顧舊環境時,先在background前面寫一行純色當 fallback, 實際支援情形以 MDN 的相容性表為準。 - 深色模式:同一組漸層在深色底上常常會顯得過亮。慣例是為深色模式另外準備一組, 把亮度往下壓,而不是直接沿用。本頁可以調好兩組各自複製一次。
這頁做不到的事,與可讀性
- 放射漸層只畫正圓:本頁固定輸出
radial-gradient(circle, ...)。 要橢圓、 要指定圓心位置、要closest-side這類尺寸關鍵字,請複製出來之後自己在 CSS 裡補。 - 顏色只收六位數 hex:顏色站不支援透明度,也不支援
rgba()、oklch()這些寫法。 需要半透明的漸層遮罩,複製出來後把#ffffff換成rgba(255,255,255,0)之類的值。 - 不會解析既有的 CSS:這頁只往外產生,沒辦法把你手上那一行漸層貼進來反推成控制項。
- 對比要兩端都檢查:漸層背景上的文字,最亮那一端與最暗那一端都要過。 拿兩端的顏色去WCAG 對比檢查跑一次,只驗其中一端等於沒驗。
- 不要只用顏色傳達資訊:圓錐漸層做成的圖表或進度環,對色覺障礙的人可能分不出段落, 請另外補上文字標籤或圖樣。
- 大面積的漸層會有色帶:跨度很大又很平緩的漸層,在一般螢幕上容易出現一圈一圈的階梯。 多加一兩個中間站、或縮小兩端的色差通常就會改善。
另外提醒,漸層是背景,不是內容。它不會被螢幕閱讀器唸出來, 所以不要把任何必要的訊息只畫在漸層裡。
常見問題
linear-gradient 的角度到底怎麼看?
CSS 的角度以 0deg 指向正上方、順時針增加。所以 0deg 是由下往上、90deg 由左到右、180deg 由上到下、270deg 由右到左,135deg 則是往右下角。設計稿裡標的角度不一定用同一個基準,貼進來之前先確認你的設計工具是怎麼定義的,直接看上面的預覽最快。
顏色站超過三個,Tailwind class 怎麼寫?
Tailwind 的 from、via、to 只有三段,放不下更多顏色站。超過三站時,本頁的 Tailwind 欄位改輸出 bg-[linear-gradient(...)] 這種 arbitrary value:整段 CSS 函式塞進中括號、空格換成底線,每一站都保留。
放射與圓錐漸層也能輸出成 Tailwind class 嗎?
Tailwind v4 可以:放射輸出 bg-radial-[circle](本頁畫的是正圓,v4 的 bg-radial 預設是橢圓,所以用中括號指定 circle),圓錐輸出 bg-conic-起始角度,後面一樣接 from、via、to。v3 只有線性的 bg-gradient-to-*,切到 v3 時這兩種會改成 bg-[...] 的完整函式。
為什麼 Tailwind class 後面多了 /srgb?
Tailwind v4 的漸層 utility 不寫修飾時在 oklab 色彩空間內插,CSS 本身的預設卻是 sRGB。插值選「不指定」時,本頁在 class 後面加上 /srgb,貼進專案看到的顏色才會跟預覽一樣;選 oklab 不用寫(那就是 v4 的預設),選 oklch 寫 /oklch。
background 跟 background-image 要用哪一個?
本頁輸出的是 background 簡寫。簡寫會把沒寫到的相關屬性一起重設回預設值,包含 background-color、background-position 與 background-repeat。如果你只是想在既有樣式上換掉那層圖,用 background-image 覆寫比較安全;漸層本身是一張 CSS 產生的圖片,兩個屬性都收。
漸層背景上的文字看不清楚,怎麼辦?
漸層的兩端顏色都要跟文字有足夠對比,只檢查其中一端是不夠的。把最亮與最暗的那一站分別拿去對比檢查工具跑一次,兩邊都過才算過。真的過不了就在文字底下壓一層半透明的純色遮罩,或把文字移到漸層裡對比較好的那一側。
分享連結會把我的配色一起帶走嗎?
會。漸層類型、角度、插值色彩空間與所有顏色站都編碼在網址的查詢字串裡,所以把連結貼給同事,對方打開就是你調好的那一組。網址裡只有這些設定值,沒有任何其他資料,設定也全部在你的瀏覽器內組出來。
資料來源
- 三個漸層函式的語法、顏色站的位置規則與角度基準,見 MDN 的 linear-gradient()、radial-gradient()與conic-gradient()。
- 規範本身在 W3C 的 CSS Images Module Level 3(線性與放射)與 Level 4(圓錐)。
- background 簡寫會重設哪些屬性,以 MDN 該頁為準。
- Tailwind 的漸層 utility 與插值修飾見官方文件 background-image,本頁的 v4 輸出另外對過 tailwindcss 4.3 的原始碼(不寫修飾時預設 oklab)。插值色彩空間的瀏覽器支援版本取自 MDN 的 browser-compat-data。
相關工具
- 顏色換算
HEX、RGB、HSL 三大色彩模型即時互轉,內建色彩挑選器(color picker),支援即時預覽與一鍵複製到剪貼簿。
- WCAG 對比度檢查
輸入前景色與背景色,即時算出對比度(contrast ratio)並判斷 WCAG 2.1 AA / AAA 等級過不過。
- Markdown 預覽
即時 Markdown 編輯與預覽,支援 GFM(表格、刪除線、checkbox、code block)。
- 圖片格式轉換
JPG ↔ PNG ↔ WebP 三大圖片格式互轉,可選輸出品質。
- 圖片轉 Base64
上傳圖片即時轉成 Base64 字串(含 Data URL 格式),直接貼進 HTML、CSS、…
- QR Code 產生器
把文字、網址、Wi-Fi 連線資訊(SSID 帳密)轉成 QR Code,支援下載 SVG 向量…
隱私:漸層完全在你的瀏覽器裡組出來,沒有任何一次上傳,本站也沒有後端會收到你的配色。 只有你自己按下「分享連結」時,設定值才會被寫進網址複製給你。
