Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SVG过滤器:仅适用于Chrome,不适用于其他浏览器_Javascript_Svg_Filter_Cross Browser_Svg Filters - Fatal编程技术网

Javascript SVG过滤器:仅适用于Chrome,不适用于其他浏览器

Javascript SVG过滤器:仅适用于Chrome,不适用于其他浏览器,javascript,svg,filter,cross-browser,svg-filters,Javascript,Svg,Filter,Cross Browser,Svg Filters,这里是bug的简单演示: 在Chrome中打开以查看其外观 问题: 在Safari中,筛选器似乎不适用或仅部分适用。。。 不一样 在Firefox中,根本没有显示任何东西——似乎是这样 隐藏过滤器和应用过滤器的div 如何让它在不同浏览器间保持一致 html: Chrome接受糟糕的语法,并试图充分利用它,而Firefox通常不会 使用display:none将SVG从DOM中移除,因此CSS无法再找到样式。将SVG设置为零大小,将其置于内容下方或使用Visibility:hidden 至

这里是bug的简单演示:

在Chrome中打开以查看其外观

问题:

  • 在Safari中,筛选器似乎不适用或仅部分适用。。。 不一样
  • 在Firefox中,根本没有显示任何东西——似乎是这样 隐藏过滤器和应用过滤器的div
如何让它在不同浏览器间保持一致

html:


Chrome接受糟糕的语法,并试图充分利用它,而Firefox通常不会

  • 使用display:none将SVG从DOM中移除,因此CSS无法再找到样式。将SVG设置为零大小,将其置于内容下方或使用Visibility:hidden
  • 至少在SVG1.1中,您不应该使用“px”、“em”等来标注过滤器元素的尺寸。(并且不需要调整feColorMatrixes的大小-默认情况下,大小是自动计算的。)
.a{
宽度:0;
身高:0;
}
.b{
宽度:200px;
高度:100px;
背景:桃花;
}

且不显示:无?
<svg class='a'>
  <defs>
    <filter id='hey'>
      <feColorMatrix
        type='matrix'
        result='darken'
        x='0'
        y='0'
        width='200px'
        height='100px'
        values='.2 .05  .05 0 .35
                .05 .2  .05 0 .35
                .05 .05 .2  0 .35
                0   0    0  1 0'
      />
      <feColorMatrix
        type='matrix'
        result='node'
        x='0'
        y='0'
        width='200px'
        height='100px'
        values='1 0 0 0 0
                0 1 0 0 0
                0 0 1 0 0
                0 0 0 1 0'
      />
      <feMerge>
        <feMergeNode in='darken' />
        <feMergeNode in='node' />
      </feMerge>
    </filter>
  </defs>
</svg>
<div class='b' style='filter: url(#hey)'></div>
.a {
  display: none;
}

.b {
  width: 200px;
  height: 100px;
  background: peachpuff;
}