在基本图形绘制中,我们只用了纯色为图形对象填充颜色和绘制轮廓。其实,出来纯色以外,我们还可以使用图案和渐变来填充图形或者绘制图形轮廓。

一、图案填充:

我们首先来看图案填充,要使用图案,首先要定义一个水平或垂直方向重复的图形对象,然后用它填充另一个对象或者作为画笔使用。这个图形对象称作tile(瓷砖),因为使用图案填充对象的行为很想在地面上铺瓷砖的过程。

<body>
<svg width="1000" height="1000" xmlns ="http://www.w3.org/2000/svg"><defs><pattern id="strip" patternUnits="userSpaceOnUse" x="0" y="0" width="6" height="6"><path d="M0 0 6 0" style="stroke: black;fill: none"/></pattern><pattern id="polkadot" patternUnits="userSpaceOnUse" x="0" y="0" width="36" height="36" ><circle cx="12" cy="12" r="12" style="fill: url(#strip);stroke: black"/></pattern></defs><rect x="36" y="36" width="100" height="100" style="fill: url(#polkadot);fill:url(#polkadot);stroke: black"/>
</svg>
</body>

以上代码显示,我们使用<pattern>元素将创建图案的<path>元素包裹了起来,然后确定一些事。同时,我们还可以发现,不仅仅对象可以用图案来填充,就连图案也是可以用图案进行填充的,都是通过fill:url(#xxx)来进行的。结果如下图:

这里介绍几个属性:

1、patternUnits属性(如何排列图案):当它属性值为:objectBoundingBox时,把边界框尺寸的百分比作为坐标(默认行为);当它的值为:userSpaceOnUse时,则采用填充对象的坐标系统,也就是绝对的。

2、patternContentUnits属性(用什么单位表示图案数据本身):默认情况下为userSpaceOnUse。如果设置成objectBoundingBox,则路径本身的数据点会基于被填充的对象来确定。

3、viewBox:在pattern里设置viewBox的属性值,可以实现图案的缩放。

二、渐变色填充

接下来我们来看一下渐变色填充。渐变分为径向渐变(radialGradient)和线性渐变(linearGradient)。

线性渐变:一系列颜色沿着一条直线过渡;

径向渐变:每个渐变点表示一个圆形路径,从中心店向外扩散。

两种渐变的设置方式大致相同。我们以径向渐变为例:

<body>
<svg width="1000" height="1000" xmlns ="http://www.w3.org/2000/svg"><defs><radialGradient id="two" cx="0%" cy="0%" r="70%" ><stop offset="0%" style="stop-color: #f96;"/><stop offset="50%" style="stop-color: #9c9;"/><stop offset="100%" style="stop-color: #906;"/></radialGradient><radialGradient id="pad" xlink:href="#two" spreadMethod="pad"/><radialGradient id="repeat" xlink:href="#two" spreadMethod="repeat"/><radialGradient id="reflect" xlink:href="#two" spreadMethod="reflect"/></defs><rect x="36" y="36" width="100" height="100" style="fill: url(#polkadot);fill:url(#reflect);stroke: black"/></svg>
</body>

效果图:

通过上述代码,我们先来分析线性渐变和径向渐变共有的:

1、<stop>元素:stop元素拥有两个必要属性:①offset:确定哪个点的颜色应该等于stop-color,值为0%~100%;②stop-color被指定在style中,但也可以指定它为独立属性。

2、<spreadMethod>属性:该属性拥有三个属性值:①pad:起始和结束渐变点会扩展到对象的边缘;②repeat:渐变会重复起点到终点的过程直到填充满整个对象;③reflect:渐变会按终点到起点、起点到终点的排列重复,直到填充满整个对象。

3、绘制多彩边框:设置好渐变色并标上id,在绘制图形的时候,将stroke属性设置为:stroke:url(#id),注意调整stroke-width为大于1,否则太细看不清楚。

径向渐变:cx、cy、r定义渐变圆,默认圆心为焦点。如果要改变焦点,则需要设置fx、fy属性;

线性渐变:通过对x1、y1、x2、y2的设置,定义线性渐变的方向,代码如下:

<linearGradient id="left_to_right" xlink:href="#two" x1="0%" y1="0%" x2="100%" y2="0%"/>
<linearGradient id="down" xlink:href="#two" x1="0%" y1="0%" x2="0%" y2="100%"/>
<linearGradient id="diagonal" xlink:href="#two" x1="0%" y1="0%" x2="100%" y2="100%"/>

SVG图案和渐变填充相关推荐

  1. 学习SVG(七)图案和渐变填充

    简介 在SVG中图形的填充和轮廓除了使用纯色,还可以使用图案和渐变. 图案填充 图案填充需要使用patterns元素,填充类型之一. patternUnits属性设置图案如何排列.默认值objectB ...

  2. html中如何设置图片填充颜色渐变,实现SVG图标的渐变填充效果

    2016年我写过一篇文章如何使用SVG图标,其"试验性部分"的结语是个警告 - "抱歉,渐变填充无法工作". 我指的是像fill: linear-gradien ...

  3. html用渐变颜色填充块,SVG颜色、渐变和填充(示例代码)

    颜色 RGB和HSL都是CSS3支持的颜色表示方法,一般普遍使用是RGB. PS:HSL浏览器兼容. RGB RGB即是代表红.绿.蓝三个通道的颜色,通过对红(R).绿(G).蓝(B)三个颜色通道的变 ...

  4. SVG颜色、渐变和填充

    SVG颜色.渐变和填充 颜色 RGB和HSL都是CSS3支持的颜色表示方法,一般普遍使用是RGB.PS:HSL浏览器兼容. RGB RGB即是代表红.绿.蓝三个通道的颜色,通过对红(R).绿(G).蓝 ...

  5. html语言填充没有只有描边,HTML5 Canvas笔记——交互绘制文本(描边、填充、阴影、渐变填充、图案填充、文本的属性设置)...

    (1)文本的描边.填充.阴影 (2)文本的渐变填充 (3)文本的图案填充 (4)文本的属性设置及效果呈现 交互绘制文本.html 交互绘制文本 body { background: #eeeeee; ...

  6. svg 绘制多边形渐变边框并填充渐变背景

    以六边形为例 绘制一个60*69像素的六边形 根据坐标  points="30,1 60,17 60,52 30,69 1,52 1,17" 设置边框大小 stroke-width ...

  7. CAD如何输入指定角度的直线、AUTOCAD——渐变填充

    有时候我们需要画一些具体角度数值的直线的时候,该怎么绘制呢?今天就用CAD梦想画图软件来操作一下. 操作工具 操作系统:Windows10 CAD软件:CAD梦想画图 步骤 1.首先输入直线(L)命令 ...

  8. 计算机word设置渐变填充,在word2013中设置渐变填充效果的详细设置步骤

    软件安装:装机软件必备包             装机软件必备包官方下载 关于电脑装机必须的软件,比如windows office系列办公软件.网页浏览器.杀毒软件.安全防护软件.刻录软件.压缩软件. ...

  9. SVG滤镜+阴影+渐变--学习笔记

    SVG滤镜的种类: 滤镜 描述 feBlend 把两个对象组合在-起,使它们受特定的混合模式控制 feColorMatrix 基于转换矩阵对颜色进行变换,每-像素的颜色值都经过矩阵计算出新颜色 feC ...

最新文章

  1. 黑马程序员java笔记之二-----多线程
  2. 【090723】动态调用webservice
  3. Python中的高阶函数sorted
  4. java开发者工具开源版_开源工具如何帮助飓风受害者
  5. 如何写好简历及如何准备面试(转)
  6. 1621: [Usaco2008 Open]Roads Around The Farm分岔路口(记忆化搜索)
  7. linux PS1 变量设置
  8. 读取金税盘、税控盘或税务Ukey基本信息
  9. 如何用python编写问卷调查_通过Python实现自动填写调查问卷
  10. 富士施乐m115b怎么连接电脑_富士施乐m115b驱动|富士施乐DocuPrint M115b一体机驱动下载 V1.01.00 官方版 - 比克尔下载...
  11. 扩展坞和hub集线器的区分
  12. python 多元字符多项式的展开问题
  13. 闲谈IPv6-从ICMP的视角形而上地分析IPv6
  14. 次世代贴图材质制作的提示和秘籍
  15. 动态生成表格案例(HTML+CSS+JS)
  16. 无法启动计算机上rasman,解决Windows无法启动Remote Access Connection Manager服务
  17. ${}和`${}`的用法
  18. 大数据、云计算、区块链、人工智能!你选择哪个?
  19. linux找出已经删除但磁盘空间未释放的大文件并清空
  20. 设计全局ER模型 数据库系统原理(2007版) 课程代码4735 笔记

热门文章

  1. 前端实现炫酷动效_web前端入门到实战:使用CSS创建一个炫酷的球体动画效果
  2. 随机硬件虚拟机修改教程
  3. Kaggle实例-家庭贫困水平预测
  4. 中学校园IP网络广播系统解决方案-校园数字IP广播系统建设指南
  5. The supplied data appears to be in the Office 2007+ XML
  6. 机器学习1:泛化(过拟合、欠拟合)
  7. 层次结构工程命名建议
  8. 延迟执行与不可变,系统讲解JavaStream数据处理
  9. ufs 固态硬盘_何必羡慕SSD?UFS3.0闪存让手机比PC还快!
  10. 网络安全系统操作名词