龙空技术网

一篇文章带你了解SVG 渐变知识

Python进阶学习交流 122

前言:

当前咱们对“svgpython”都比较看重,你们都需要剖析一些“svgpython”的相关知识。那么小编也在网摘上网罗了一些有关“svgpython””的相关文章,希望姐妹们能喜欢,看官们一起来学习一下吧!

渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。

SVG渐变主要有两种类型:(Linear,Radial)。

一、SVG 线性渐变

<linearGradient>元素用于定义线性渐变。

<linearGradient>标签必须嵌套在<defs>的内部。<defs>标签是definitions的缩写,可对诸如渐变之类的特殊元素进行定义。

线性渐变可以定义为水平,垂直或角渐变。

/*y1和y2相等,而x1和x2不同时,可创建水平渐变。当x1和x2相等,而y1和y2不同时,可创建垂直渐变。当x1和x2不同,且y1和y2不同时,可创建角形渐变。*/
实例 1

定义水平线性渐变从黄色到红色的椭圆形。

SVG代码

<!DOCTYPE html><html><body style="background-color: aqua;"><title>项目</title><svg xmlns="; version="1.1"><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></body></html>

运行效果:

代码解析:

<linearGradient>标签的id属性可为渐变定义一个唯一的名称。<linearGradient>标签的X1,X2,Y1,Y2属性定义渐变开始和结束位置。渐变的颜色范围可由两种或多种颜色组成,每种颜色通过一个<stop>标签来规定。offset属性用来定义渐变的开始和结束位置。填充属性把 ellipse 元素链接到此渐变。实例 2

定义一个垂直线性渐变从黄色到红色的椭圆形。

SVG代码:

<svg xmlns="; version="1.1"><defs><linearGradient id="grad1" 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(#grad1)" /></svg>

运行效果:

实例 3

定义一个椭圆形,水平线性渐变从黄色到红色并添加一个椭圆内文本。

SVG代码:

<svg xmlns="; version="1.1"><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)" /> <text fill="#000" font-size="45" font-family="Verdana" x="150" y="86"> SVG</text></svg>

运行效果:

代码解析:

<text> 元素是用来添加一个文本。

二、SVG 放射性渐变

<radialGradient>元素用于定义放射性渐变。

<radialGradient>标签必须嵌套在<defs>的内部。<defs>标签是definitions的缩写,它可对诸如渐变之类的特殊元素进行定义。

实例 1

定义一个放射性渐变从白色到蓝色椭圆。

SVG代码:

<svg xmlns="; version="1.1"><defs><radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"><stop offset="0%" style="stop-color:rgb(255,255,255);     stop-opacity:0" /><stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1" /></radialGradient></defs><ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" /></svg>

运行效果:

代码解析:

<radialGradient>标签的 id 属性可为渐变定义一个唯一的名称。CX,CY和r属性定义的最外层圆和Fx和Fy定义的最内层圆。渐变颜色范围可以由两个或两个以上的颜色组成。每种颜色用一个<stop>标签指定。offset属性用来定义渐变色开始和结束。填充属性把ellipse元素链接到此渐变。实例 2

定义放射性渐变从白色到蓝色的另一个椭圆。

SVG代码:

<svg xmlns="; version="1.1">  <defs>    <radialGradient id="grad1" cx="20%" cy="30%" r="30%" fx="50%" fy="50%">     <stop offset="0%" style="stop-color:rgb(255,255,255); stop-opacity:0" />     <stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1" />    </radialGradient>  </defs> <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" /></svg>

运行效果:

三、总结

本文基于HTML基础,介绍了图像SVG元素中的渐变效果,通过案例的分析,实际项目中需要注意的点,对代码进行解析。开发项目中遇到的难题,都提供了一些有效的解决办法。

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

代码很简单,希望能够帮助读者更好去学习SVG。

想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:

标签: #svgpython