SVG 阴影


注意: Internet Explorer和Safari不支持SVG滤镜!


<defs> 和 <filter>

所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义。

<filter>标签用来定义SVG滤镜。<filter>标签使用必需的id属性来定义向图形应用哪个滤镜?


SVG <feOffset>

实例 1

<feOffset>元素是用于创建阴影效果。我们的想法是采取一个SVG图形(图像或元素)并移动它在xy平面上一点儿。

第一个例子偏移一个矩形(带<feOffset>),然后混合偏移图像顶部(含<feBlend>):

SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性

下面是SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><defs><filter id="f1" x="0" y="0" width="200%" height="200%"><feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /><feBlend in="SourceGraphic" in2="offOut" mode="normal" /></filter></defs><rect width="90" height="90" stroke="green" stroke-width="3"fill="yellow" filter="url(#f1)" />
</svg>

对于Opera用户: 查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <filter>元素id属性定义一个滤镜的唯一名称
  • <rect>元素的滤镜属性用来把元素链接到"f1"滤镜

实例 2

现在,偏移图像可以变的模糊(含 <feGaussianBlur>):

SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性

下面是SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><defs><filter id="f1" x="0" y="0" width="200%" height="200%"><feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" /></filter></defs><rect width="90" height="90" stroke="green" stroke-width="3"fill="yellow" filter="url(#f1)" />
</svg>

对于Opera用户: 查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <feGaussianBlur>元素的stdDeviation属性定义了模糊量

实例 3

现在,制作一个黑色的阴影:

SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性

下面是SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><defs><filter id="f1" x="0" y="0" width="200%" height="200%"><feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" /></filter></defs><rect width="90" height="90" stroke="green" stroke-width="3"fill="yellow" filter="url(#f1)" />
</svg>

对于Opera用户: 查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <feOffset>元素的属性改为"SourceAlpha"在Alpha通道使用残影,而不是整个RGBA像素。

实例 4

现在为阴影涂上一层颜色:

SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性

下面是SVG代码:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><defs><filter id="f1" x="0" y="0" width="200%" height="200%"><feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" /><feColorMatrix result="matrixOut" in="offOut" type="matrix"values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" /><feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" /></filter></defs><rect width="90" height="90" stroke="green" stroke-width="3"fill="yellow" filter="url(#f1)" />
</svg>

对于Opera用户: 查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <feColorMatrix>过滤器是用来转换偏移的图像使之更接近黑色的颜色。 '0.2'矩阵的三个值都获取乘以红色,绿色和蓝色通道。降低其值带来的颜色至黑色(黑色为0)

SVG 渐变 - 线性


SVG 渐变

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

SVG渐变主要有两种类型:

  • Linear
  • Radial

SVG 线性渐变 - <linearGradient>

<linearGradient>元素用于定义线性渐变。

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

线性渐变可以定义为水平,垂直或角渐变:

  • 当y1和y2相等,而x1和x2不同时,可创建水平渐变
  • 当x1和x2相等,而y1和y2不同时,可创建垂直渐变
  • 当x1和x2不同,且y1和y2不同时,可创建角形渐变

实例 1

定义水平线性渐变从黄色到红色的椭圆形:

下面是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)" />
</svg>

对于Opera用户:查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <linearGradient>标签的id属性可为渐变定义一个唯一的名称
  • <linearGradient>标签的X1,X2,Y1,Y2属性定义渐变开始和结束位置
  • 渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个<stop>标签来规定。offset属性用来定义渐变的开始和结束位置。
  • 填充属性把 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>

对于Opera用户:查看SVG文件(右键单击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="#ffffff" font-size="45" font-family="Verdana" x="150" y="86">SVG</text>
</svg>

对于Opera用户:查看SVG文件(右键单击SVG图形预览源)。

代码解析:

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

SVG 渐变- 放射性


SVG 放射性渐变 - <radialGradient>

<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>

对于Opera用户:查看SVG文件(右键单击SVG图形预览源)。

代码解析:

  • <radialGradient>标签的 id 属性可为渐变定义一个唯一的名称
  • CX,CY和r属性定义的最外层圆和Fx和Fy定义的最内层圆
  • 渐变颜色范围可以由两个或两个以上的颜色组成。每种颜色用一个<stop>标签指定。offset属性用来定义渐变色开始和结束
  • 填充属性把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>

对于Opera用户:查看SVG文件(右键单击SVG图形预览源)。

原文:http://www.runoob.com/svg/svg-grad-radial.html

转自:SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性

SVG 教程 (六)SVG 阴影,SVG 渐变 - 线性,SVG 渐变- 放射性相关推荐

  1. SVG 教程 (七)SVG 实例,SVG 参考手册

    SVG 实例 在线实例 下面的例子是把SVG代码直接嵌入到HTML代码中. 谷歌Chrome,火狐,Internet Explorer9,和Safari都支持. 注意:下面的例子将不会在Opera运行 ...

  2. SVG 教程 (五)文本,Stroke 属性,SVG 滤镜,SVG 模糊效果

    SVG <text> SVG 文本 - <text> <text> 元素用于定义文本. 实例 1 写一个文本: 下面是SVG代码: <svg xmlns=&q ...

  3. 画布渐变以及svg图形

    目录 一.画布渐变 1.线性渐变 2.径向渐变 3.文本渐变 二.svg 一.制作图形 1.制作矩形 2.制作圆形 3.绘制直线和折线 4.绘制闭合多边形 二.动画 1.基础动画 2.形变动画 3.路 ...

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

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

  5. SVG 教程 (四)多边形,曲线,路径

    SVG <polygon> SVG 多边形 - <polygon> 实例 1 <polygon> 标签用来创建含有不少于三个边的图形. 多边形是由直线组成,其形状是 ...

  6. SVG 教程 (三)圆形,椭圆,直线

    SVG <circle> SVG 圆形 - <circle> <circle> 标签可用来创建一个圆: 下面是SVG代码: <svg xmlns=" ...

  7. SVG 教程 (二)矩形

    SVG <rect> SVG Shapes SVG有一些预定义的形状元素,可被开发者使用和操作: 矩形 <rect> 圆形 <circle> 椭圆 <elli ...

  8. SVG 教程 (一)

    SVG 简介 SVG 是使用 XML 来描述二维图形和绘图程序的语言. 学习之前应具备的基础知识: 继续学习之前,你应该对以下内容有基本的了解: HTML XML 基础 如果希望首先学习这些内容,请在 ...

  9. css锥形渐变结合SVG实现环形进度条

    css锥形渐变结合SVG实现环形进度条 准备: 锥形渐变 MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/gradient/conic-gra ...

最新文章

  1. digitalocean如何还原出厂设置
  2. mongodb windows安装
  3. python中双冒号[::]切片的作用
  4. 头条上python广告_满大街都是Python广告,真的如广告说的那样方便吗?,学精通后真能月如过万吗?业内大佬怎么看?...
  5. junit测试找不到数据库_将数据库日志添加到JUnit3
  6. python和gui结合实例_Python GUI —— 简单例子+讲解
  7. UI设计灵感|注册登录页面怎样设计才更合理?
  8. java web请求转发_Javaweb请求转发及重定向实现详解
  9. 标准布局类(11中布局类)
  10. 通信原理及matlab仿真实验指导书,通信原理实验指导书——2015.pdf
  11. 实用:AE/PR 视频交换格式哪家强?
  12. 《花花公子》刊登1985年乔布斯专访
  13. cpua55和a53哪个好_也来谈谈目前最新的A55架构
  14. Lenovo/联想乐Phone S680 root教程_方法
  15. html5视频在线剪辑,五种剪辑方法让视频更精彩
  16. 如何用python编写程序打开csv格式文件
  17. 新团队成员之间破冰训练
  18. QWidget/QToolBar::addAction的设计真是绝妙
  19. wince挂起和唤醒_relayon
  20. 标准查询运算符(SQO)

热门文章

  1. 能量项链(NOIP-2006 提高组)
  2. 理论基础 —— 排序 —— 原始冒泡排序
  3. Spoken English-口语-单词背诵 3步法
  4. python实现将文件夹下文件随机移动指定数量到另一个文件夹下
  5. 在线颜色拾取器 - 资源篇
  6. HTML极客自适应网址导航模板,更换背景+看板娘
  7. 苹果cmsv10精仿迅播影院2tu风格主题模板
  8. 帝国CMS7.5小品屋在线小品相声视频网站模板修复版
  9. LdCms.NetCore轻量级的网站内容管理系统
  10. 第三方支付平台源码 商业支付源码