SVG内发光(内阴影)、外发光(外阴影)、两边(阴影)(内外发光)

2,295 阅读1分钟

SVG内发光(内阴影)、外发光(外阴影)、两边(阴影)(内外发光)

参考

SVG内发光实现
SVG 阴影滤镜:内发光
SVG circles with inset-shadow
css-tricks.com/adding-shad…
Shadow Filters: Inner Glow
Creating inner shadow in svg
借助SVG滤镜实现CSS无法实现的阴影和模糊效果

基础

SVG feComposite operator
学习 canvas 的 globalCompositeOperation 做出的神奇效果
HTML canvas globalCompositeOperation 属性

两边发光

<filter id="filterId" height="150%" width="150%" x="-25%" y="-25%" filterUnits="userSpaceOnUse">
          <feMorphology operator="dilate" radius="3" in="SourceAlpha" result="thicken" />
          <feGaussianBlur in="thicken" stdDeviation="3" result="blurred" />
          <feFlood flood-color="#1f33a2" result="glowColor" />
          <feComposite in="glowColor" in2="blurred" operator="in" result="softGlowColored" />
          <feMerge>
            <feMergeNode in="softGlowColored"/>
            <feMergeNode in="SourceGraphic"/>
          </feMerge>
        </filter>

内发光

   <filter id="inset-shadow" height="150%" width="150%" x="-25%" y="-25%" filterUnits="userSpaceOnUse">
     <feFlood flood-color="#1f33a2" />
     <feComposite in2="SourceGraphic" operator="out" />
     <feGaussianBlur stdDeviation="3" result="blur" />
     <feComposite operator="atop" in2="SourceGraphic"/>

外发光

   <filter id="outset-shadow" height="150%" width="150%" x="-25%" y="-25%" filterUnits="userSpaceOnUse">
          <feMorphology operator="dilate" radius="3" in="SourceAlpha" result="thicken" />
          <feGaussianBlur in="thicken" stdDeviation="3" result="blurred" />
          <feFlood :flood-color="#1f33a2" result="glowColor" />
          <feComposite in="glowColor" in2="blurred" operator="in" result="softGlowColored" />
           <feComposite in="softGlowColored" in2="SourceGraphic" operator="out" result="outSoftGlowColored" />
          <feMerge>
            <feMergeNode in="outSoftGlowColored"/>
            <feMergeNode in="SourceGraphic"/>
          </feMerge>
        </filter>