博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SVG渐变
阅读量:6768 次
发布时间:2019-06-26

本文共 4580 字,大约阅读时间需要 15 分钟。

前面的话

  给SVG元素应用填充和描边,除了使用纯色外,还可以使用渐变。本文将详细介绍SVG渐变

 

线性渐变

  有两种类型的渐变:线性渐变和径向渐变。必须给渐变内容指定一个id属性,否则文档内的其他元素不能引用它。为了让渐变能被重复使用,渐变内容需要定义在<defs>标签内部,而不是定义在形状上面

  线性渐变沿着直线改变颜色,要插入一个线性渐变,需要在SVG文件的defs元素内部,创建一个<linearGradient> 节点

  结果如下所示,默认情况下实现的是水平方向的渐变

  <stop>元素一共有3个属性,包括offsetstop-colorstop-opacity

offset用来设置色标位置stop-color用来设置色标颜色stop-opacity用来设置色标的透明度

  下面是一个例子

【x1、x2、y1、y2】

  线性渐变包括x1、x2、y1、y2这四个属性,用来控制渐变的大小和方向。取值为0-100%,或者0-1的小数。默认地,x1=y1=y2=0、x2=1

  如果变成垂直方向的渐变,则需要设置为x1=x2=y1=0、y2=1

  如果将y2或x2设置为50%,则50%-100%这一部分区域填充为最后一个色标的纯色

  当然了,可以有多个色标

  渐变除了可以作为填充,也可以作为描边

【xlink:href】

  xlink:href属性用于在一个渐变中引用另一个渐变,被引用的渐变的属性是可继承的,也可以被重写

  下面的例子中,Gradient2引用了Gradient1的渐变,并重写了渐变的方向

【gradientUnits】

  gradientUnits有两个的值,userSpaceOnUseobjectBoundingBox,这用于决定渐变是否随着引用它的元素进行缩放。也就是说它决定了x1y1x2y2的缩放

  userSpaceOnUsex1y1x2y2表示当前用户坐标系统的坐标。也就是说渐变中的值都是绝对值

  objectBoundingBoxx1y1x2y2表示应用渐变的元素创建的边界坐标系统。也就是说渐变随着应用的元素进行了缩放

  如果不设置,默认取值是objectBoundingBox

  如果设置为userSpaceOnUse,则x1、x2、y1、y2需要设置为用户坐标系的坐标绝对值

【spreadMethod】

  spreadMethod可以接受三个值,padreflectrepeat,它定义了渐变如何开始和结束,当cxcy的值是在0%100%里面的时候

pad:(默认值)使用开始和结束位置的颜色结点来填充剩余的部分reflect: 反射渐变图案,从开始->结束,再从结束->开始,然后开始->结束,往复直到空间都填满repeat: 从start-to-end重复渐变图案,直到空间填满

   pad为默认值

  下面是reflect的效果

  下面是repeat的效果

 

径向渐变

  径向渐变与线性渐变相似,只是它是从一个点开始发散绘制渐变。创建径向渐变需要在文档的defs中添加一个<radialGradient>元素

【cx、cy、r、fx、fy】

  与线性渐变的x1、y1、x2、y2属性不同,径向渐变使用cx、cy、r、fx、fy这五个属性来设置渐变

r 设置圆的半径cx、cy 定义渐变的中心点坐标fx、fy  定义渐变的焦点坐标

  如果不设置,r默认0.5,即元素宽度或高度的一半;cx、cy默认为0.5;fx、fy默认为0.5

  巧妙地设置焦点坐标,可以实现聚光灯的效果

【xlink:href】

  xlink:href属性用于在一个渐变中引用另一个渐变,被引用的渐变的属性是可继承的,也可以被重写

  下面的例子中,Gradient2引用了Gradient1的渐变,并重写了渐变的方向

【gradientUnits】

  gradientUnits有两个的值,userSpaceOnUseobjectBoundingBox,这用于决定渐变是否随着引用它的元素进行缩放。也就是说它决定了cx、cy、fx、fy、r的缩放

  userSpaceOnUse: cx、cy、fx、fy、r表示当前用户坐标系统的坐标。也就是说渐变中的值都是绝对值

  objectBoundingBox: cx、cy、fx、fy、r表示应用渐变的元素创建的边界坐标系统。也就是说渐变随着应用的元素进行了缩放

  如果不设置,默认取值是objectBoundingBox

  如果设置为userSpaceOnUse,则cx、cy、fx、fy、r需要设置为用户坐标系的坐标绝对值 

【spreadMethod】

  和线性渐变一样。它可以接受三个值,padreflectrepeat,它定义了渐变如何开始和结束,当cxcy的值是在0%100%里面的时候

pad:(默认值)使用开始和结束位置的颜色结点来填充剩余的部分reflect: 反射渐变图案,从开始->结束,再从结束->开始,然后开始->结束,往复直到空间都填满repeat: 从start-to-end重复渐变图案,直到空间填满

  pad为默认值

   下面是reflect的效果

  下面是repeat的效果

 

转载于:https://www.cnblogs.com/xiaohuochai/p/7495894.html

你可能感兴趣的文章
Lync 小技巧-46-intranet-共享桌面-internet-网络问题
查看>>
二十年后的回眸(6)——中途夭折的初次创业
查看>>
DB2日常运维之总结
查看>>
用hadoop中的libhdfs和fuse-dfs构建快速云存储
查看>>
ospf中创建末节区域
查看>>
Redis实战(6)数据类型四Sets
查看>>
Android Studio第八期 - 自定义布局无网有网状态
查看>>
Centos 6.4用源代码安装LAMP环境
查看>>
读《Go并发编程实战》第4章 流程控制方式
查看>>
Exchange Server2010系列之十五:Exchange磁盘压力测试
查看>>
IT168:数据库安全审计用户需求调查报告
查看>>
Exchange 2007 前端 IIS 内存占用过高
查看>>
利用Cocos2dx-3.0新物理特性模拟弹珠迷宫
查看>>
Lync Server 2010不同规模拓扑图详解
查看>>
QQ群排名优化:“小百度”大蓝海有搞头
查看>>
写在毕业季(四):是做IT?IT?还是IT呢?
查看>>
Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”
查看>>
验证控件收藏
查看>>
安装配置Varnish3.0手记
查看>>
C#:根据年、月、日获取星期几
查看>>