CSS 漸層 (Gradients)

CSS 漸層可以建立顏色平滑過渡的背景效果,不需要使用圖片。

linear-gradient(線性漸層)

顏色沿著一條直線漸變。

基本語法

.gradient {
  background: linear-gradient(方向, 顏色1, 顏色2, ...);
}

預設方向(上到下)

.gradient {
  background: linear-gradient(red, blue);
}

指定方向

.gradient {
  background: linear-gradient(to right, red, blue);      /* 左到右 */
  background: linear-gradient(to left, red, blue);       /* 右到左 */
  background: linear-gradient(to bottom, red, blue);     /* 上到下(預設) */
  background: linear-gradient(to top, red, blue);        /* 下到上 */
  background: linear-gradient(to bottom right, red, blue); /* 對角 */
}

使用角度

.gradient {
  background: linear-gradient(0deg, red, blue);     /* 下到上 */
  background: linear-gradient(90deg, red, blue);    /* 左到右 */
  background: linear-gradient(180deg, red, blue);   /* 上到下 */
  background: linear-gradient(45deg, red, blue);    /* 對角 */
}

多個顏色

.rainbow {
  background: linear-gradient(to right, red, orange, yellow, green, blue, purple);
}

控制顏色位置

.gradient {
  background: linear-gradient(to right, red 0%, blue 100%);
  background: linear-gradient(to right, red 0%, yellow 50%, blue 100%);
  background: linear-gradient(to right, red 30%, blue 70%);  /* 中間漸變區較短 */
}

硬邊界(無漸變)

.hard-stop {
  background: linear-gradient(to right, red 50%, blue 50%);
}

radial-gradient(放射漸層)

顏色從中心向外放射漸變。

基本語法

.gradient {
  background: radial-gradient(red, blue);
}

形狀

.gradient {
  background: radial-gradient(circle, red, blue);     /* 圓形 */
  background: radial-gradient(ellipse, red, blue);    /* 橢圓(預設) */
}

大小

.gradient {
  background: radial-gradient(circle closest-side, red, blue);
  background: radial-gradient(circle farthest-side, red, blue);
  background: radial-gradient(circle closest-corner, red, blue);
  background: radial-gradient(circle farthest-corner, red, blue);  /* 預設 */
}

位置

.gradient {
  background: radial-gradient(circle at center, red, blue);       /* 預設 */
  background: radial-gradient(circle at top left, red, blue);
  background: radial-gradient(circle at 20% 30%, red, blue);
}

完整語法

.gradient {
  background: radial-gradient(circle 100px at 50% 50%, red, blue);
}

conic-gradient(圓錐漸層)

顏色沿著圓周方向漸變。

.gradient {
  background: conic-gradient(red, yellow, green, blue, red);
}

/* 從特定角度開始 */
.gradient {
  background: conic-gradient(from 45deg, red, blue);
}

/* 從特定位置開始 */
.gradient {
  background: conic-gradient(at 50% 50%, red, blue);
}

餅圖效果

.pie {
  background: conic-gradient(
    red 0deg 90deg,
    blue 90deg 180deg,
    green 180deg 270deg,
    yellow 270deg 360deg
  );
  border-radius: 50%;
}

repeating-gradient(重複漸層)

重複線性漸層

.stripes {
  background: repeating-linear-gradient(
    45deg,
    #f0f0f0,
    #f0f0f0 10px,
    #ffffff 10px,
    #ffffff 20px
  );
}

重複放射漸層

.circles {
  background: repeating-radial-gradient(
    circle,
    #f0f0f0,
    #f0f0f0 10px,
    #ffffff 10px,
    #ffffff 20px
  );
}

實用範例

漂亮的背景

.hero {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}

.sunset {
  background: linear-gradient(to bottom, #ff6b6b, #feca57, #48dbfb);
}

文字漸層

.gradient-text {
  background: linear-gradient(to right, #667eea, #764ba2);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

按鈕漸層

.btn-gradient {
  background: linear-gradient(to right, #667eea, #764ba2);
  border: none;
  color: white;
  padding: 12px 24px;
}

.btn-gradient:hover {
  background: linear-gradient(to right, #764ba2, #667eea);
}

卡片光澤

.card {
  background: linear-gradient(135deg, #ffffff 0%, #f5f5f5 100%);
}

條紋背景

.stripes {
  background: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 10px,
    rgba(0,0,0,0.03) 10px,
    rgba(0,0,0,0.03) 20px
  );
}

覆蓋層

.overlay {
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,0.7) 100%
  );
}

多層漸層

.multi-gradient {
  background: 
    linear-gradient(to right, rgba(255,0,0,0.5), transparent),
    linear-gradient(to bottom, rgba(0,0,255,0.5), transparent),
    white;
}

光暈效果

.glow {
  background: radial-gradient(
    circle at center,
    rgba(255,255,255,0.8) 0%,
    transparent 70%
  );
}

漸層工具

線上漸層產生器可以幫助你設計漸層:

  • CSS Gradient
  • UI Gradients
  • Gradient Hunt

瀏覽器支援

現代瀏覽器都支援 CSS 漸層,舊版瀏覽器可以設定 fallback:

.gradient {
  background: #667eea;  /* fallback */
  background: linear-gradient(to right, #667eea, #764ba2);
}