SVG feMerge滤镜复制HTML元素样式实例页面

回到相关文章 »

效果:

原始按钮

应用滤镜后


滤镜同时动画

代码:

CSS代码:
.filter {
    filter: url(#offsetOpacity);
}
.filter-animate {
    filter: url(#offsetOpacityAnimate);
}
HTML代码:
<h4>原始按钮</h4>
<button type="primary" class="ui-button">按钮</button>

<h4>应用滤镜后</h4>
<button type="primary" class="ui-button filter">按钮</button>

<h4>滤镜同时动画</h4>
<button type="primary" class="ui-button filter-animate">按钮</button>
SVG代码:
<svg width="0" height="0" xmlns="http://www.w3.org/2000/svg">
  <filter id="offsetOpacity" width="100" height="200">
    <feOffset in="SourceGraphic" dx="20" dy="20" />
    <feComponentTransfer>
      <feFuncA type="linear" slope="0.5" />
    </feComponentTransfer>
    <feMerge>
      <feMergeNode />
      <feMergeNode in="SourceGraphic" />
    </feMerge>
  </filter>
</svg>

<svg width="0" height="0" xmlns="http://www.w3.org/2000/svg">
  <filter id="offsetOpacityAnimate" width="100" height="200">
    <feOffset in="SourceGraphic" dx="20" dy="20">
      <!-- Chrome 需要这个才有动画效果 -->
      <animate attributeName="x" />
    </feOffset>
    <feComponentTransfer>
      <feFuncA type="linear" slope="0.5">
          <animate attributeName="slope" values="0.5;0;0.5" dur="3s" repeatCount="indefinite" />
      </feFuncA>
    </feComponentTransfer>
    <feMerge>
      <feMergeNode />
      <feMergeNode in="SourceGraphic" />
    </feMerge>
  </filter>
</svg>