2013-01-22 60 views
4

IE10已經不再支持其DirectX圖像操作;它現在使用SVG標準。但是,例如,在Firefox中,您可以對任何<img>元素應用svg過濾器,但在IE10中,我似乎只能將它用於<svg> <image ... /> </svg>中的圖像。在CSS中對IE10使用SVG過濾器

我是否需要爲不同的瀏覽器編寫單獨的標記?這似乎是錯誤的。

我試過使用像-ms-filter過濾器的CSS過濾器,但沒有一個在IE10上工作。

更新1:

好吧,所以我想我可能不會特別清楚。

<!DOCTYPE html> 
<style> 
    .pop { 

     filter: url(#pixelate); 

    } 

    .pop:hover { 
     filter: none; 
    } 

    .lol { 
     filter: url(#pixelate); 
    } 

    .lol:hover { 
     filter: none; 
    } 

    .svgRoot 
{ 
    height: 150px; 
    width: 200px; 
} 
</style> 
<svg class="svgRoot"> 
<image class="lol" x="0" y="0" width="100px" height="100px" xlink:href="http://i.imgur.com/M5TIb.jpg" /> 
</svg> 

<svg class="svgRoot"> 
    <defs> 
     <filter id="pixelate"> 
      <feMorphology operator="erode" radius="2" /> 
     </filter> 
    </defs> 
    <image x="0" y="0" width="100px" height="100px" xlink:href="http://i.imgur.com/M5TIb.jpg" filter="url(#pixelate)" /> 
    <text class="svgText" x="25%" y="90%" filter="url(#pixelate)">SVG text</text> 
</svg> 

<img src="http://i.imgur.com/M5TIb.jpg" width="100" class="pop"> 

在Firefox中,最後一個元素<img>過濾器工作。但是,它不在IE10中。使用帶DX的IE4-IE9可以達到同樣的效果。效果。但是IE10實現了SVG。但它似乎只適用於<svg>標籤中包含的元素。那麼如何在IE10中做任何濾鏡效果而不寫入不同的標記呢?我覺得我必須失去了一些東西......

希望如果您需要在IE10 +特定樣式這個清除它

+0

我不認爲Firefox在CSS中支持'filter'。你能爲你的問題添加一個代碼示例嗎? – Pavlo

+0

更新了一些代碼,可怕的代碼,但一些代碼:) – Hazza

+0

這[部分作品](http://jsfiddle.net/aSUSr/1/)在Chrome(''是不可見的),其他瀏覽器有各種問題顯示它。我通常使用選項2(在每個''元素中定義過濾器),但這次我無法使用它。 – Pavlo

回答

1

,它會在CSS皮卡使用:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { styles here } 
+1

問題是,我想應用於一個元素的特定風格只適用於如果它是一個SVG元素,非常糟糕 – Hazza

+0

@Hazza我遇到了同樣的問題,除了使用SVG之外,我還沒有找到令人滿意的或正確的答案。 –