跳转到内容

CSS 渐变

刀刀
0字
0分钟
2026/8/16

渐变,通过 background-image 设置渐变效果,可以在任何使用 background-image 的容器盒子内使用。

渐变包含以下几种类型:

  • 线性渐变 linear-gradient()
  • 径向渐变 radial-gradient()
  • 锥形渐变 conic-gradient()
  • 重复渐变 repeating-linear-gradient()repeating-conic-gradient()

依次详谈这些渐变。

CSS 线性渐变

CSS 线性渐变的语法

css
<linear-gradient> = linear-gradient( [ [ <angle> | to <side-or-corner> ], ]? <color-stop>[, <color-stop>]+ )

CSS 线性渐变的效果

CSS 线性渐变的基础效果

linear-gradient 线性渐变是一种两个以上颜色之间的平滑过渡效果。线性渐变为某一方向指向的渐变效果,如由左到右,上到下,左上到右下等。和径向渐变不同的是,径向渐变是一中心点向周围扩散的渐变,径向渐变为某一线性指向方向的渐变。

实现最基础的线性渐变效果,只需要指定两个及以上的颜色即可。

基础效果:

css
div {
  background: linear-gradient(blue, pink);
}

设置了颜色后它会自动计算,均匀分布在渐变路径中。

CSS 线性渐变的方向切换

渐变的角度方向默认从上到下,也可以手动设置调整,允许输入方向单词和角度。方向单词包括以下几种:

  • 从上到下:to bottom

    css
    div {
      background: linear-gradient(to bottom, blue, pink);
    }

    to bottom

  • 从左到右:to right

    css
    div {
      background: linear-gradient(to right, blue, pink);
    }

    to right

  • 从右到左

    css
    div {
      background: linear-gradient(to left, blue, pink);
    }

    to left

  • 从下到上

    css
    div {
      background: linear-gradient(to top, blue, pink);
    }

    to top

  • 从左上到右下

    css
    div {
      background: linear-gradient(to right bottom, blue, pink);
    }

    to right bottom

  • 从右上到左下

    css
    div {
      background: linear-gradient(to left bottom, blue, pink);
    }

    to left bottom

  • 从左下到右上

    css
    div {
      background: linear-gradient(to right top, blue, pink);
    }

    right top

  • 从右下到左上

    css
    div {
      background: linear-gradient(to left top, blue, pink);
    }

    to left top

除了设置对角方向,还能设置角度,0deg 表示从下到上,90deg 表示从左到右。正角度表示顺时针,逆角度表示逆时针。

CSS 线性渐变的色标位置

可以为径向和线性渐变设置 0、1 或 2 个百分比值或者绝对长度值来调整它们的位置。如果将位置设置为百分数,0% 表示起始点,而 100% 表示终点,但是如果需要的话也可以设置这个范围之外的其他值。

如果有些位置你没有明确设置,那么将会自动计算,第一个色标在 0% 处,最后一个色标在 100%,其他的色标则位于其相邻的两个色标中间。

css
div {
  background: linear-gradient(to left, lime 50px, red 60%, cyan);
}

xiaoguo

CSS 线性渐变的硬过渡

不需要平滑过渡,要硬线过渡效果,可以将相邻的颜色停止设置为相同的位置。

css
div {
  background: linear-gradient(to bottom left, cyan 50%, palegoldenrod 50%);
}

yingguodu

CSS 线性渐变的过渡中心

默认情况下,渐变会平滑地从一种颜色过渡到另一种颜色,通过设置一个值可以把渐变的中心点移动到指定位置。

css
div1 {
  background: linear-gradient(blue, 10%, pink);
}
div2 {
  background: linear-gradient(blue, pink);
}

对比效果:

duibitu

CSS 线性渐变的条纹

要在渐变中包含一个实心、非过渡的颜色区域,请包含色标的两个位置。色标可以有两个位置,这相当于两个连续颜色在不同位置具有相同的色标。颜色将在第一个色标时达到完全饱和,保持该饱和度到第二个色标,并通过相邻色标的第一个位置过渡到相邻色标的颜色。

css
.multiposition-stops {
  background: linear-gradient(
    to left,
    lime 20%,
    red 30%,
    red 45%,
    cyan 55%,
    cyan 70%,
    yellow 80%
  );
  background: linear-gradient(
    to left,
    lime 20%,
    red 30% 45%,
    cyan 55% 70%,
    yellow 80%
  );
}
.multiposition-stop2 {
  background: linear-gradient(
    to left,
    lime 25%,
    red 25%,
    red 50%,
    cyan 50%,

贡献者

The avatar of contributor named as duyidao duyidao
The avatar of contributor named as 刀刀 刀刀

页面历史

刀刀博客累计访客 人;文档累计访问量共