pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SVG進(jìn)階 | SVG過濾器(SVG Filters)

SVG過濾器可以為SVG圖形添加一些非常酷的效果,如陰影、模糊和高光等效果。本文將介紹SVG過濾器的輸入和輸出,過濾器的尺寸,高斯模糊濾鏡,偏移濾鏡和顏色矩陣濾鏡的相關(guān)知識。
1.jpg

  SVG過濾器可以為SVG圖形添加一些非常酷的效果,如陰影、模糊和高光等效果。

  SVG過濾器的例子

  先來看一個簡單的SVG過濾器的例子,直觀的感受一些它的效果:
  1. <defs>
  2.   <filter id="blurFilter" y="-5" height="40"
  3.       <feGaussianBlur in="SourceGraphic" stdDeviation="3" y="-"/>
  4.   </filter>
  5. </defs>

  6. <ellipse cx="55" cy="60" rx="25" ry="15"
  7.   style="stroke: none; fill: #663399; " />

  8. <ellipse cx="155" cy="60" rx="25" ry="15"
  9.   style="stroke: none; fill: #663399; filter: url(#blurFilter);" />        
復(fù)制代碼

  在這個例子中,對一個SVG橢圓形應(yīng)用了模糊濾鏡,得到的結(jié)果如下:
2.jpg
  SVG過濾器的輸入和輸出

  SVG過濾器在應(yīng)用過濾效果的時候需要一個輸入源。這個輸入源可以是一個圖形,或圖形的alpha通道,或另一個過濾器的輸出值。

  SVG過濾器可以從輸入源中產(chǎn)生一個輸出圖像。一個過濾器的輸出可以是另一個過濾器的輸入,這樣,過濾器可以被鏈接起來使用。

  下面是一張SVG過濾器輸入和輸出的說明圖片:
3.jpg
  SVG過濾器的輸入通常在SVG濾鏡的in屬性中指定,例如:
  1. <feGaussianBlur stdDeviation="3" in="SourceGraphic" />                              
復(fù)制代碼

  如果你需要將一個SVG過濾器的輸出作為另一個過濾器的輸入,需要在輸出元素上添加一個result屬性:
  1. <feGaussianBlur stdDeviation="3" in="SourceGraphic" result="blur"/>     
復(fù)制代碼

  這樣,在另一個過濾器中,可以通過在in屬性中設(shè)置值為blur來使用它作為輸入源。

  過濾器的尺寸

  一個SVG過濾器的尺寸由x、y、width和height屬性來決定。

  x和y屬性是相對于輸入源圖形的x和y屬性來設(shè)定。由于過濾器的輸出圖形通常會比輸入圖形大(例如對圖形添加模糊效果),因此,我們通常需要將x和y屬性設(shè)置為負(fù)值來剪切掉多出的部分。

  width和height屬性指定過濾器的寬度和高度,大多數(shù)時候你需要指定寬度和高度大于輸出圖像的尺寸,以便于在剪切后尺寸和原來的圖形基本相等。

  多重過濾器

  你可以通過<feMerge>元素來同時使用多個SVG過濾器。看下面的例子:
  1. <defs>
  2.     <filter id="blurFilter2" y="-10" height="40" x="-10" width="150">
  3.         <feOffset in="SourceAlpha" dx="3" dy="3" result="offset2" />
  4.         <feGaussianBlur in="offset2" stdDeviation="3"  result="blur2"/>

  5.         <feMerge>
  6.             <feMergeNode in="blur2" />
  7.             <feMergeNode in="SourceGraphic" />
  8.         </feMerge>
  9.     </filter>
  10. </defs>

  11. <ellipse cx="55" cy="60" rx="25" ry="15"
  12.          style="stroke: none; fill: #0000ff; filter: url(#blurFilter2);" />        
復(fù)制代碼

  這個例子中創(chuàng)建了一個SVG過濾器,它包括兩個濾鏡元素:<feOffset>和<feGaussianBlur>。偏移濾鏡的輸入源是橢圓圖形的alpha通道,高斯模糊濾鏡的輸入源是偏移濾鏡的輸出。

  <feMerge>元素將原始圖像和高斯模糊濾鏡的輸出相結(jié)合。在<feMerge>元素中的結(jié)合順序決定了它們的顯示順序,后輸入的元素會顯示在先輸入元素的上面。

  上面的代碼得到的結(jié)果類似于一個drop陰影效果,下面是輸出的結(jié)果:
4.jpg
  高斯模糊濾鏡

  SVG高斯模糊濾鏡可以將圖像進(jìn)行模糊處理。要使用高斯模糊濾鏡,可以使用元素。下面是一個例子:
  1. <defs>
  2.     <filter id="blurFilter4" x="-20" y="-20" width="200" height="200">
  3.         <feGaussianBlur in="SourceGraphic" stdDeviation="10" />
  4.     </filter>
  5. </defs>
  6. <rect x="20" y="20" width="90" height="90"
  7.       style="stroke: none; fill: #00ff00; filter: url(#blurFilter4);" />         
復(fù)制代碼

  這個例子中,在<filter>元素中使用了<feGaussianBlur>濾鏡。在矩形元素中的style屬性中使用filter來指向這個SVG過濾器,得到的結(jié)果如下面圖像所示:
5.jpg

  模糊的尺寸

  <feGaussianBlur>元素的stdDeviation屬性決定圖像的模糊尺寸大小。它的數(shù)值越大,圖像的模糊尺寸越大。在下面的例子中分別設(shè)置了三個不同的stdDeviation值。
  1. <defs>
  2.     <filter id="blurFilter5" x="-20" y="-20" width="200" height="200">
  3.         <feGaussianBlur in="SourceGraphic" stdDeviation="2" />
  4.     </filter>
  5.     <filter id="blurFilter6" x="-20" y="-20" width="200" height="200">
  6.         <feGaussianBlur in="SourceGraphic" stdDeviation="6" />
  7.     </filter>
  8.     <filter id="blurFilter7" x="-20" y="-20" width="200" height="200">
  9.         <feGaussianBlur in="SourceGraphic" stdDeviation="12" />
  10.     </filter>
  11. </defs>

  12. <rect x="20" y="24" width="90" height="90"
  13.       style="stroke: none; fill: #00ff00; filter: url(#blurFilter5);" />
  14. <rect x="150" y="24" width="90" height="90"
  15.       style="stroke: none; fill: #00ff00; filter: url(#blurFilter6);" />
  16. <rect x="300" y="24" width="90" height="90"
  17.       style="stroke: none; fill: #00ff00; filter: url(#blurFilter7);" />                 
復(fù)制代碼

  得到的返回結(jié)果如下:
6.jpg

  通過ALPHA通道進(jìn)行模糊

  在上面的例子中,過濾器的輸入源是SourceGraphic,意思是使用圖形的RGB顏色來作為輸入源。你也可以使用圖形的alpha通道來作為輸入源,只需要將<feGaussianBlur>元素的in屬性設(shè)置為SourceAlpha即可。下面是一個例子:
  1. <defs>
  2.     <filter id="blurFilter8" x="-20" y="-20" width="200" height="200">
  3.         <feGaussianBlur <b>in="SourceAlpha"</b> stdDeviation="10" />
  4.     </filter>
  5. </defs>
  6. <rect x="20" y="20" width="90" height="90"
  7.       style="stroke: none; fill: #00ff00; filter: url(#blurFilter8);" />               
復(fù)制代碼

  得到的返回結(jié)果如下:
7.jpg
  注意觀察,矩形的填充色是綠色的,但是通過alpha通道來進(jìn)行模糊之后,得到的結(jié)果是黑白色的圖像。

  偏移濾鏡

  偏移濾鏡會將輸入圖形進(jìn)行移動之后作為結(jié)果輸出。你可以使用它來上下左右移動圖形。通常偏移濾鏡都是用于制作drop陰影效果。下面是一個例子:
  1. <defs>
  2.     <filter id="offsetFilter1" x="-20" y="-20" width="200" height="200">
  3.         <feOffset in="SourceGraphic" dx="80" dy="20" />
  4.     </filter>
  5. </defs>
  6. <rect x="20" y="20" width="90" height="90"
  7.       style="stroke: #9a12b3; fill: none; filter: url(#offsetFilter1);" />
  8. <rect x="20" y="20" width="90" height="90"
  9.       style="stroke: #1f3a93; fill: none; " />
復(fù)制代碼

  得到的結(jié)果如下所示:
8.jpg
  這個例子中定義了兩個矩形,它們的尺寸和位置都相同。紫色描邊的矩形被應(yīng)用了偏移濾鏡,使它相對于原來的位置向右移動了80個單位,向下移動了20各單位。

  顏色矩陣濾鏡

  顏色矩陣濾鏡用來在圖形的顏色中應(yīng)用矩陣變換。下面是一個例子:
  1. <defs>
  2.     <filter id="colorMatrixFilter1" x="-20" y="-20" width="200" height="200">
  3.         <feColorMatrix in="SourceGraphic" type="matrix"
  4.                 values="0 0 0 1 0
  5.                         0 0 0 1 0
  6.                         0 0 0 1 0
  7.                         0 0 0 1 0
  8.                 "/>
  9.     </filter>
  10. </defs>
  11. <rect x="20" y="20" width="90" height="90"
  12.       style="stroke: none; fill: #049372; filter: url(#colorMatrixFilter1);" />
  13. <rect x="150" y="20" width="90" height="90"
  14.           style="stroke: #049372; fill: #049372;" />     
復(fù)制代碼

  矩陣的值有<feColorMatrix>元素中的values屬性提供。這里共有4X5=20個值。在原始圖像中它們的值類似下面的樣子:
  1. 0 0 0 red   0
  2. 0 0 0 green 0
  3. 0 0 0 blue  0
  4. 0 0 0 1     0         
復(fù)制代碼

  上面的代碼得到的返回結(jié)果如下:
9.jpg
  注意觀察,左邊的圖形應(yīng)用了顏色矩陣濾鏡,它原來有一個綠色的填充顏色,在使用了顏色矩陣之后只剩下描邊了。右邊是沒有使用顏色矩陣的圖形。

  混合(BLEND)濾鏡

  混合濾鏡可以將多個輸入濾鏡混合為一個。下面是一個例子:
  1. <svg width="500" height="100">
  2.   <defs>
  3.     <filter id="blurFilter3" y="-10" height="40" x="-10" width="150">
  4.       <feOffset in="SourceAlpha" dx="3" dy="3" result="offset3" />
  5.       <feGaussianBlur in="offset3" stdDeviation="3"  result="blur3"/>

  6.       <feBlend  in="SourceGraphic" in2="blur3" x="-10" width="160"/>

  7.     </filter>
  8.   </defs>

  9.   <ellipse cx="55" cy="60" rx="25" ry="15"
  10.          style="stroke: none; fill: #1f3a93;
  11.                 filter: url(#blurFilter3);" />

  12. </svg>           
復(fù)制代碼

  這個例子聲明了三個濾鏡。第一個偏移濾鏡,第二個是高斯模糊濾鏡。高斯模糊濾鏡的輸入是偏移濾鏡的輸出。第三個<feBlend>濾鏡有兩個輸入,它將這兩個輸入進(jìn)行了混合。

  上面代碼得到的結(jié)果如下:
10.jpg
  本文版權(quán)屬于jQuery之家,轉(zhuǎn)載請注明出處:http://www.htmleaf.com/ziliaoku/ ... g/201507062179.html

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗,特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認(rèn)!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實驗、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 陕西高职单招-陕西高职分类考试网| 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 打包钢带,铁皮打包带,烤蓝打包带-高密市金和金属制品厂 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 温室大棚建设|水肥一体化|物联网系统 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 包头市鑫枫装饰有限公司 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 |