代码之家  ›  专栏  ›  技术社区  ›  James Wood

为什么SVG过滤器动画在Edge或Chrome中不起作用[[副本]

  •  1
  • James Wood  · 技术社区  · 6 年前

    @keyframes hue {
      from {
        filter: hue-rotate(0deg);
      }
    
      to {
        filter: hue-rotate(-360deg);
      }
    }
    
    .hex {
        fill-opacity: 1.0;
        animation: hue 5s infinite linear;
    }
    <svg id="color-fill" xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="150" viewBox="0 0 300 300" xmlns:xlink="http://www.w3.org/1999/xlink">
      
      <polygon class="hex" points="0,0 300,0 300,300 0,300" fill="red"></polygon>
      
    </svg>

    在Firefox 62中,这是可行的。

    在边17和铬69中,我看到一个红色的矩形。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Waruyama    6 年前

    作为 @凯伊多 评论中提到,Chrome/Edge目前不支持单个SVG元素上的CSS过滤器,但是将过滤器应用到整个SVG可以在两种浏览器上工作,如您在本例中所见:

    @keyframes hue {
      from {
        filter: hue-rotate(50deg);
      }
    
      to {
        filter: hue-rotate(-360deg);
      }
    }
    
    .hex {
        fill-opacity: 1.0;
        animation: hue 5s infinite linear;
        filter: hue-rotate(50deg);
    }
    <svg class="hex" id="color-fill" xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="150" viewBox="0 0 300 300" xmlns:xlink="http://www.w3.org/1999/xlink">
      
      <polygon points="0,0 300,0 300,300 0,300" fill="red"></polygon>
      
    </svg>