In Chapter 6, Stunning Aesthetics with CSS3, we looked at the CSS filter effects. However, they are not currently supported in Internet Explorer 10 or 11. That can be frustrating if you want to enjoy filter effects in those browsers. Luckily, with help from SVG, we can create filters that work in Internet Explorer 10 and 11 too but as ever, it's perhaps not as straight forward as you might imagine. For example, in example_07-05, we have a page with the following markup inside the body:
<img class="HRH" src="queen@2x-1024x747.png"/>
It's an image of the Queen of England. Ordinarily, it looks like this:

Now, also in that example folder, is an SVG with a filter defined in the defs elements. The SVG markup looks like this:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="myfilter" x="0" y="0">
<feColorMatrix in="SourceGraphic" type="hueRotate" values="90" result="A"/>
<feGaussianBlur in="A" stdDeviation="6"/>
</filter>
</defs>
</svg>Within the filter, we are first defining a hue rotation of 90 (using the feColorMatrix, and then passing that effect, via the result attribute, to the next filter (the feGaussianBlur) with a blur value of 6. Be aware that I've been deliberately heavy handed here. This doesn't produce a nice aesthetic, but it should leave you in no doubt that the effect has worked!
Now, rather than add that SVG markup to the HTML, we can leave it where it is and reference it using the same CSS filter syntax we saw in the last chapter.
.HRH {
filter: url('filter.svg#myfilter');
}In most evergreen browsers (Chrome, Safari, Firefox) this is the effect:

Sadly, this method doesn't work in IE 10 or 11. However, there is another way to achieve our goal, and that's using SVGs own image tag to include the image within the SVG. Inside example_07-06, we have the following markup:
<svg height="747px" width="1024px" viewbox="0 0 1024 747" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="myfilter" x="0" y="0">
<feColorMatrix in="SourceGraphic" type="hueRotate" values="90" result="A"/>
<feGaussianBlur in="A" stdDeviation="6"/>
</filter>
</defs>
<image x="0" y="0" height="747px" width="1024px" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="queen@2x-1024x747.png" filter="url(#myfilter)"></image>
</svg>The SVG markup here is very similar to the external filter.svg filter we used in the previous example but height, width, and viewbox attributes have been added. In addition, the image we want to apply the filter to is the only content in the SVG outside of the defs element. To link to the filter, we are using the filter attribute and passing the ID of the filter we want to use (in this case from within the defs element above).
Although this approach is a little more involved, it means you can get the many and varied filter effects that SVG affords, even in versions 10 and 11 of Internet Explorer.