最新的Web开发教程
 

SVG渐变 - 线性


SVG渐变

渐变是从一种颜色到另一种平滑过渡。 此外,几个颜色过渡,可以应用到相同的元件。

有两种主要类型的SVG梯度:

  • 线性
  • 径向

SVG线性渐变 - <的LinearGradient>

所述<linearGradient>元素用来定义的线性梯度。

<linearGradient>元素必须嵌套在一个<defs>标记。 在<defs>标签是短期的定义和含有特殊元素的定义(such as gradients)

线性渐变可被定义为水平,垂直或角梯度:

  • 当y1和y2相等,x1和x2不同水平梯度的创建
  • 当X1和X2是等于和y1和y2不同垂直梯度创建
  • 当X1和X2不同,y1和y2不同角度梯度创建

例1

定义具有从黄色到红色的水平线性梯度的椭圆:

style="stop-color:rgb(255,255,0);stop-opacity:1" /> style="stop-color:rgb(255,0,0);stop-opacity:1" /> 填写=“URL(#grad1)”/>对不起,您的浏览器不支持嵌入式SVG。

下面是SVG代码:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" />
</svg>
试一试»

Code explanation:

  • id的属性<linearGradient>标签定义一个唯一的名称为渐变
  • 的X1,X2,Y1,所述的Y2属性<linearGradient>标签定义渐变的开始和结束位置
  • 颜色范围的梯度可以由两种或更多的颜色。 每种颜色都与一个指定<stop>标记。 的offset属性用来定义渐变颜色的开始和结束
  • fill属性的椭圆元件链接到梯度

例2

定义具有从黄色到红色的垂直线性梯度的椭圆:

style="stop-color:rgb(255,0,0);stop-opacity:1" /> style="stop-color:rgb(255,255,0);stop-opacity:1" /> 填写=“URL(#grad2)”/>对不起,您的浏览器不支持嵌入式SVG。

下面是SVG代码:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad2" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad2)" />
</svg>
试一试»

例3

定义具有从黄色到红色的水平线性梯度椭圆形,并添加椭圆内的文本:

style="stop-color:rgb(255,255,0);stop-opacity:1" /> style="stop-color:rgb(255,0,0);stop-opacity:1" /> 填写=“URL(#grad3)”/> SVG 对不起,您的浏览器不支持嵌入式SVG。

下面是SVG代码:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad3" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad3)" />
  <text fill="#ffffff" font-size="45" font-family="Verdana" x="150" y="86">
  SVG</text>
</svg>
试一试»

Code explanation:

  • <text>元素用来添加文本