Фильтр SVG в HTML img в IE10

У меня есть этот фильтр, который работает в Chrome и Firefox, но я не могу заставить его работать в IE.

http://codepen.io/anon/pen/lwpbo

IE10 должен поддерживать фильтры SVG, так что же не так?


person mr.martan    schedule 25.02.2014    source источник


Ответы (1)


В настоящее время IE не поддерживает фильтры SVG в документах HTML или эффекты фильтров CSS. Он поддерживает только фильтры SVG в документах SVG или фрагменты SVG внутри документов HTML. Если вы хотите, чтобы он работал в IE, вам нужно преобразовать его из документа HTML в документ SVG, включить изображение во фрагмент SVG или включить изображение в файл SVG и вместо этого связать его со страницы HTML. .

Для последнего вы можете создать оболочку SVG вокруг изображения, как показано ниже:

<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="300" height="300"> 

    <filter id="greyscale">
        <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0
                                             0.3333 0.3333 0.3333 0 0
                                             0.3333 0.3333 0.3333 0 0
                                             0      0      0      1 0"/>
    </filter>
    <image x="0" y="0" xlink:href="Lenna.jpg " filter="url(#greyscale)" width="300" height="300"/>
</svg>

Вы можете увидеть это в действии на этом изображении.

Затем из HTML вам нужно вместо этого ссылаться на файл SVG:

<img src="lenna.svg" alt="Lena Söderberg desaturated with SVG" />

Если вы хотите, вы можете включить приведенный выше SVG непосредственно в файл HTML, а не ссылаться на него с помощью элемента img. Вы можете увидеть этот подход в этой демонстрации jsFiddle. Необходимый код SVG точно такой же.

IE5.5–IE9 поддерживают собственные собственные фильтры Microsoft, но они были удалены в IE10.

person David Storey    schedule 25.02.2014
comment
IE 10 также поддерживает фильтры SVG в INLINE SVG — вам не нужен отдельный документ. - person Michael Mullany; 26.02.2014
comment
Да, я тоже это имел в виду, но не ясно выразился. Я добавлю это. - person David Storey; 26.02.2014