zoukankan      html  css  js  c++  java
  • 一篇文章带你了解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/

  • 相关阅读:
    Windows 8.1 Visual Studio 2013 OpenGL 配置
    panic 和 recover的区别
    Beego操作数据库
    sql 中 inner join、left join 和 right join的区别
    Go实现网页爬虫
    SqlServer中 不区分大小写 和 全半角的写法
    循环语句
    switch语句
    iota枚举
    关于Go开发工具(LiteIDE)
  • 原文地址:https://www.cnblogs.com/dcpeng/p/13936417.html
Copyright © 2011-2022 走看看