美文网首页前端开发
一篇文章带你了解SVG 渐变知识

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

作者: Python进阶学习交流 | 来源:发表于2020-11-05 08:42 被阅读0次

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

    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="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. <linearGradient>标签的id属性可为渐变定义一个唯一的名称。

    2. <linearGradient>标签的X1,X2,Y1,Y2属性定义渐变开始和结束位置。

    3. 渐变的颜色范围可由两种或多种颜色组成,每种颜色通过一个<stop>标签来规定。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>
    

    运行效果:

    代码解析:

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

    二、SVG 放射性渐变

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

    <radialGradient>标签必须嵌套在<defs>的内部。<defs>标签是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. <radialGradient>标签的 id 属性可为渐变定义一个唯一的名称。

    2. CX,CY和r属性定义的最外层圆和Fx和Fy定义的最内层圆。

    3. 渐变颜色范围可以由两个或两个以上的颜色组成。每种颜色用一个<stop>标签指定。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。

    相关文章

      网友评论

        本文标题:一篇文章带你了解SVG 渐变知识

        本文链接:https://www.haomeiwen.com/subject/lkhovktx.html