CSS渐变

时间:2020-01-09 10:34:08  来源:igfitidea点击:

CSS 3使我们可以在HTML元素中使用渐变作为背景色。渐变是颜色过渡,其中区域从一种颜色渐变为另一种颜色。渐变通常用于模拟上方有色表面上的光的效果。

CSS渐变有两种变体:线性渐变和径向渐变。线性渐变以线性方式更改颜色。径向渐变以圆形方式更改颜色。线性和径向渐变都将在本文中介绍。

线性渐变

线性渐变以线性方式为区域或者文本着色,这意味着颜色会从一种颜色线性更改为另一种颜色。这是一个可视的CSS线性渐变示例:

这是创建此渐变的代码:

<style>
    #gradient1 {
        background-image: linear-gradient(180deg, #666666, #000000);
        height: 100px;
    }
</style>
<div id="gradient1"></div>

该示例使用CSS函数" linear-gradient()"作为" background-image" CSS属性的值。这使浏览器使用线性渐变为HTML元素的背景上色。

" linear-gradient()"函数采用三个参数。第一个参数是渐变的角度。在上面的示例中,我使用了" 180deg",即180度。第二个和第三个参数是"从"和"到"颜色。在上面的示例中,渐变从颜色"#666666"(深灰色)变为"#000000"(黑色)。

这是一个使用45度角从绿色变为蓝色的示例:

颜色停止

" linear-gradient()"函数中的颜色参数称为"色标"。色标由颜色和完全应用颜色的百分比位置组成。看一下这个线性渐变示例:

<style>
    #gradient3 {
        background-image: linear-gradient(180deg, #00ff00 20%, #0000ff 80%);
        height: 100px;
    }
</style>
<div id="gradient3"></div>

请注意,这两种颜色现在后面有一个百分比(" 20%"和" 80%")。这意味着渐变从20%开始进入绿色区域,而80%结束进入蓝色区域。这是应用于HTML元素时线性渐变的外观:

请注意,渐变开始之前的区域如何用第一种颜色着色,而渐变结束之后的区域如何用第二种颜色着色。

我们可以使用两个以上的色标。这是一个使用3个色标的线性渐变示例:

<style>
    #gradient4 {
        background-image: linear-gradient(45deg, #00ff00 20%, #ff0000 50%, #0000ff 80%);
        height: 100px;
    }
</style>
<div id="gradient4"></div>

此示例在渐变中间(位于" 50%"处)具有红色。这是应用于HTML元素时线性渐变的外观:

径向渐变

径向渐变从中心点扩展其颜色变化,并以圆形或者椭圆形的方式扩展。这是一个视觉示例:

径向渐变是使用" radial-gradient()" CSS函数定义的。这是生成上面示例的代码:

<style>
    #gradient5 {
        background-image: radial-gradient(ellipse farthest-corner at 50% 50% , #00FFFF 0%, #0000FF 95%);
        height: 100px;
    }
</style>
<div id="gradient5"></div>

径向渐变语法

" radial-gradient()"函数遵循以下语法:

radial-gradient(
    shape
    [length | percentage] [| extent-keyword]
    [at position]
    ,color stop
    ,color stop
    [,color stop]
);

" shape"参数可以采用" circle"或者" ellipse"的值。这指定径向渐变的形状应为圆形还是椭圆形。

" length"参数设置圆形渐变的径向渐变的半径。对于椭圆渐变,我们需要指定2个长度参数。一个用于X和Y方向上的渐变半径。对于椭圆渐变,我们还可以使用百分比作为长度,而不是px,em等。

"在位置"指定渐变的中心。如果未指定这些参数,则假定位置在HTML元素的中心。关键字" at"被写为文本,位置被写为两个坐标。例如200px 50px。这意味着"在点x = 200,y = 50"。

可以使用"范围关键字"代替" length"参数来确定径向渐变的大小。可能的"范围关键字"值是:

  • 最近端
  • 壁橱角落
  • 最远的一面
  • 最远的角落

这些关键字使径向渐变从渐变的中心(位置)在水平和垂直方向上扩展到渐变所应用到的HTML元素的最近侧,最近角,最远侧或者最远角。

颜色停止参数由2个或者多个颜色停止定义组成,以逗号分隔。同样,色标定义包括一个颜色值和一个百分比,该百分比告诉该颜色位于渐变中的距离。 "定位"是指渐变从该颜色开始或者以该颜色结束时具有该颜色的位置。

以下是一些示例,向我们展示该语法的实际外观,以及相应的径向渐变在渲染时的外观。

<style>
  #gradient6 {
    background-image: radial-gradient(circle, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient6"></div>
<style>
  #gradient7 {
    background-image: radial-gradient(circle 100px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient7"></div>
<style>
  #gradient8 {
    background-image: radial-gradient(circle 100px at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient8"></div>
<style>
  #gradient9 {
    background-image: radial-gradient(circle closest-side at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient9"></div>
<style>
  #gradient10 {
    background-image: radial-gradient(circle closest-corner at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient10"></div>
<style>
  #gradient11 {
    background-image: radial-gradient(ellipse, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient11"></div>
<style>
  #gradient12 {
    background-image: radial-gradient(ellipse 100px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient12"></div>
<style>
  #gradient13 {
    background-image: radial-gradient(ellipse 100px 50px at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient13"></div>
<style>
  #gradient14 {
    background-image: radial-gradient(ellipse farthest-side at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient14"></div>
<style>
  #gradient15 {
    background-image: radial-gradient(ellipse farthest-corner at 200px 50px, #FF0000 0%, #0000FF 100%);
    height: 100px;
  }
</style>
<div id="gradient15"></div>

CSS渐变与SVG渐变

CSS渐变不是用渐变为区域或者形状着色的唯一选择。 SVG还内置了渐变功能,并且功能非常强大。我们可以在我的SVG渐变教程中阅读有关SVG渐变的信息。

要将SVG渐变用作HTML元素的背景,可以将SVG图像用作HTML元素的背景图像,并在SVG图像内部创建一个带有渐变的矩形。然后缩放背景图像以填充HTML元素。有关更多信息,请参见CSS背景图像。