鍍金池/ 教程/ HTML/ SVG <filter>元素
SVG鏈接
SVG陰影效果
SVG線性漸變
SVG文本
SVG平面陰影
SVG圖表
SVG交互
SVG時鐘
SVG漸變
SVG <pattern>元素
SVG簡介
SVG徑向漸變
SVG <filter>元素
SVG對話框效果
SVG形狀
SVG stroke屬性
SVG圖形
SVG教程
SVG事件監(jiān)聽器
SVG加載器示例
SVG腳本(JavaScript)
SVG圖標
SVG拖動
SVG模糊效果

SVG <filter>元素

SVG使用<filter>元素來定義濾鏡。 <filter>元素使用一個id屬性來唯一標識它。濾鏡在<def>元素中定義,然后由它們的id通過圖形元素引用。

SVG提供了一組豐富的濾鏡。 以下是常用濾鏡的列表。

  • feBlend
  • feColorMatrix
  • feComponentTransfer
  • feComposite
  • feConvolveMatrix
  • feDiffuseLighting
  • feDisplacementMap
  • feFlood
  • feGaussianBlur
  • feImage
  • feMerge
  • feMorphology
  • feOffset - filter for drop shadows
  • 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 用來定義濾鏡效果區(qū)域的單位。 它為濾鏡中的各種長度值以及定義濾鏡子區(qū)域的屬性指定了坐標系。 如果filterUnits =“userSpaceOnUse”,則值表示使用'filter'元素時當(dāng)前用戶坐標系中的值。 如果filterUnits =“objectBoundingBox”,值表示在使用'filter'元素時就地引用元素上邊界框的分數(shù)或百分比值。 默認是userSpaceOnUse。
2 primitiveUnits 用來定義濾鏡效果區(qū)域的單位。 它為濾鏡中的各種長度值以及定義濾鏡子區(qū)域的屬性指定了坐標系。 如果filterUnits =“userSpaceOnUse”,則值表示使用'filter'元素時當(dāng)前用戶坐標系中的值。 如果filterUnits =“objectBoundingBox”,值表示在使用'filter'元素時就地引用元素上邊界框的分數(shù)或百分比值。 默認是userSpaceOnUse。
3 x 濾鏡邊界框的x軸坐標。 缺省值是0
4 y 濾鏡邊界框的y軸坐標。 缺省值是0
5 width 濾鏡邊界框的寬度。 缺省值是0。
6 height 濾鏡邊界框的高度。 缺省值是0。
7 filterRes 代表濾鏡區(qū)域的數(shù)字。
8 xlink:href 用于指另一個濾鏡。

示例

文件:testSVG.html -

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

以下是上述代碼的一些說明 -

  • 兩個<filter>元素定義為filter1filter2。
  • feGaussianBlur濾鏡效果使用stdDeviation模糊量定義模糊效果。
  • in="SourceGraphic"定義該效果適用于整個元素。
  • feOffset濾鏡效果用于創(chuàng)建陰影效果。 in =“SourceAlpha”定義該效果適用于RGBA圖形的Alpha部分。
  • <rect>元素使用filter屬性鏈接過濾器。

在Chrome瀏覽器中打開文件:textSVG.html,結(jié)果如下 -

濾鏡與陰影效果

<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.html,結(jié)果如下 -


上一篇:SVG模糊效果下一篇:SVG圖標