- SVG 演示
- SVG - 加载器
- SVG - 对话框
- SVG - 图标
- SVG - 时钟
- SVG - 拖动
- SVG - 关键点
- SVG - 地图
- SVG - amChart
- SVG - 图表
- SVG - 平面着色
- SVG - 图像滤镜
- SVG - 文本效果
- SVG - 使用 CSS 效果的文本
- SVG - 箭头效果
- SVG - 品牌效果
- SVG - 胶状效果
- SVG - 渐变效果
- SVG - 活泼效果
- SVG - 滚动效果
- SVG - 幻灯片效果
- SVG - 标签效果
- SVG - Raphael.js 效果
- SVG - Velocity.js 效果
- SVG - Walkway.js 效果
- SVG - zPath.js 效果
- SVG - Vague.js 效果
- SVG - 变换效果
- SVG - 全屏叠加效果
- SVG - Lazylinepainter.js 效果
- SVG - 演示游戏
- SVG - 实时 SVG 广告
- SVG 有用资源
- SVG - 常见问题解答
- SVG - 快速指南
- SVG - 有用资源
- SVG - 讨论
SVG - 滤镜
SVG 使用<filter>元素来定义滤镜。<filter>元素使用id属性来唯一标识它。滤镜在<def>元素内定义,然后通过它们的id被图形元素引用。
SVG 提供了一套丰富的滤镜。以下是常用滤镜的列表。
- feBlend
- feColorMatrix
- feComponentTransfer
- feComposite
- feConvolveMatrix
- feDiffuseLighting
- feDisplacementMap
- feFlood
- feGaussianBlur
- feImage
- feMerge
- feMorphology
- feOffset - 用于投影的滤镜
- feSpecularLighting
- feTile
- feTurbulence
- feDistantLight
- fePointLight
- feSpotLight
声明
以下是<filter>元素的语法声明。我们只展示了主要属性。
<filter filterUnits="units to define filter effect region" primitiveUnits="units to define primitive filter subregion" x="x-axis co-ordinate" y="y-axis co-ordinate" width="length" height="length" filterRes="numbers for filter region" xlink:href="reference to another filter" > </filter>
属性
序号 | 名称和描述 |
---|---|
1 | filterUnits − 用于定义滤镜效果区域的单位。它指定滤镜中各种长度值的坐标系以及定义滤镜子区域的属性。如果 filterUnits="userSpaceOnUse",则值表示在使用“filter”元素时当前用户坐标系中的值。如果 filterUnits="objectBoundingBox",则值表示在使用“filter”元素时引用元素边界框的分数或百分比。默认为 userSpaceOnUse。 |
2 | primitiveUnits − 用于定义滤镜效果区域的单位。它指定滤镜中各种长度值的坐标系以及定义滤镜子区域的属性。如果 filterUnits="userSpaceOnUse",则值表示在使用“filter”元素时当前用户坐标系中的值。如果 filterUnits="objectBoundingBox",则值表示在使用“filter”元素时引用元素边界框的分数或百分比。默认为 userSpaceOnUse。 |
3 | x − 滤镜边界框的 x 坐标。默认为 0。 |
4 | y − 滤镜边界框的 y 坐标。默认为 0。 |
5 | width − 滤镜边界框的宽度。默认为 0。 |
6 | height − 滤镜边界框的高度。默认为 0。 |
7 | filterRes − 表示滤镜区域的数字。 |
8 | xlink:href − 用于引用另一个滤镜。 |
示例
testSVG.htm<html> <title>SVG Filter</title> <body> <h1>Sample SVG Filter</h1> <svg width="800" height="800"> <defs> <filter id="filter1" x="0" y="0"> <feGaussianBlur in="SourceGraphic" stdDeviation="8" /> </filter> <filter id="filter2" 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> <g> <text x="30" y="50" >Using Filters (Blur Effect): </text> <rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3" fill="green" filter="url(#filter1)" /> </g> </svg> </body> </html>
定义为 filter1 和 filter2 的两个<filter>元素。
feGaussianBlur 滤镜效果使用 stdDeviation 定义模糊效果及其模糊量。
in="SourceGraphic" 定义该效果适用于整个元素。
feOffset 滤镜效果用于创建阴影效果。in="SourceAlpha" 定义该效果适用于 RGBA 图形的 alpha 部分。
<rect> 元素使用 filter 属性链接滤镜。
输出
在 Chrome 浏览器中打开 textSVG.htm。您可以使用 Chrome/Firefox/Opera 直接查看 SVG 图像,无需任何插件。Internet Explorer 9 及更高版本也支持 SVG 图像渲染。
带阴影效果的滤镜
<html> <title>SVG Filter</title> <body> <h1>Sample SVG Filter</h1> <svg width="800" height="800"> <defs> <filter id="filter1" x="0" y="0"> <feGaussianBlur in="SourceGraphic" stdDeviation="8" /> </filter> <filter id="filter2" 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> <g> <text x="30" y="50" >Using Filters (Shadow Effect): </text> <rect x="100" y="100" width="90" height="90" stroke="green" stroke-width="3" fill="green" filter="url(#filter2)" /> </g> </svg> </body> </html>
输出
在 Chrome 浏览器中打开 textSVG.htm。您可以使用 Chrome/Firefox/Opera 直接查看 SVG 图像,无需任何插件。Internet Explorer 9 及更高版本也支持 SVG 图像渲染。
广告