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

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

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

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

一、SVG 线性渐变

元素用于定义线性渐变。

标签必须嵌套在的内部。标签是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="http://www.w3.org/2000/svg" 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>

运行效果:

代码解析:

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

实例 2

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

SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" 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="http://www.w3.org/2000/svg" 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>

运行效果:

代码解析:

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

二、SVG 放射性渐变

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

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

实例 1

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

SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" 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>

运行效果:

代码解析:

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

实例 2

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

SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" 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网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

相关文章
|
2天前
CSS3渐变颜色
CSS3渐变颜色
18 0
|
9月前
|
前端开发
通过构建背景图学习CSS径向渐变
通过构建背景图学习CSS径向渐变
38 0
|
9月前
SVG 线性渐变 和 径向渐变
SVG 线性渐变 和 径向渐变
167 0
|
前端开发
canvas渐变
canvas渐变
97 1
canvas渐变
|
前端开发
你可以学会的svg动画
你可以学会的svg动画
html+css实战170-css精灵-背景图的缩放
html+css实战170-css精灵-背景图的缩放
94 0
html+css实战170-css精灵-背景图的缩放
|
前端开发
CSS和SVG实现文字渐变、描边、投影
CSS和SVG实现文字渐变、描边、投影
CSS和SVG实现文字渐变、描边、投影
|
前端开发 JavaScript
canvas-渐变文字
html要求: body这里的onload一定要写,在这个处理模式下,是在body这里执行加载页面完成后加载canvas的命令。有的写在了js中的window.onload=function(){},这里就要换一种写法了。
819 0
|
前端开发 JavaScript
利用 SVG 和 CSS3 实现有趣的边框动画
今天我们来探索一下Carl Philipe Brenner的网站上一个微妙而有趣的动画效果。当鼠标经过网格元素时,会有一个微妙的动画发生——网格元素变得透明,每条边有个顺时针的动画,创造了非常好的效果。这种效果是通过JS给span标签的宽或者高做了动画。我们待会会用SVG和CSS渐变来完成。注意,这个技术还是实验性的。
249 0
利用 SVG 和 CSS3 实现有趣的边框动画