[EMAIL PROTECTED] wrote:
 > I've tried on various occasions to use the AlphaImageLoader filter to
 > get IE to properly display PNGs with alpha transparency... though I'm
 > never really successful. What I want to do is display those PNGs as
 > regular images, not as background-image. Is it possible? Or does the
 > AlphaImageLoader do it's thing by rendering an image as a background-
 > image? If I apply the AlphaImageLoader filter directly to an <img>
 > tag, will it enable IE to properly display the PNG, or will it simply
 > invalidate the xHTML and break the image for all other browsers (or
 > both)?
 >

Hi,

The AlphaImageLoader will work on an image, but as you surmise it 
functions rather like a background, with the result that the image still 
appears in front of it complete with the nasty grey that replaces the 
transparency in IE. One method you can use is to wrap the image in some 
additional element such as a span with class "pngWrapper" and use the 
following CSS to make the image fully transparent to IE, and the correct 
rendering will show through:

CSS:

.pngWrapper {
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='anImage.png',sizingMethod='scale');
}

.pngWrapper img {
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}

XHTML:

<span class="pngWrapper">
<img src="anImage.png" alt="An example image" />
</span>

If your image is in a link then you don't need the span as you can apply 
the class to the <a> instead, but you'll have to add "cursor: hand;" to 
the rules for .pngWrapper to make IE change the cursor when the mouse 
pointer hovers over it.

Note that this method will fail for users who have all ActiveX disabled 
in their browser, but I don't think that's a common enough setting to be 
too concerned about; those users will be used to seeing a lot of 
breakage around the web anyway and probably won't get too mad. In 
addition it doesn't work in IE5, although IE5.5 is OK with it.

There are various solutions which apply this lot via a behaviour (a .htc 
file), but that will fail if JavaScript is disabled. To keep your main 
CSS minty-fresh and valid, you should keep the above CSS in a separate 
file, linked within an IE conditional comment:

<!--[if lte IE 6]>
    <link rel="stylesheet" type="text/css" href"ie-win-fixes.css">
<![endif]-->

HTH,

Nick.
-- 
Nick Fitzsimons
http://www.nickfitz.co.uk/


______________________________________________________________________
css-discuss [EMAIL PROTECTED]
http://www.css-discuss.org/mailman/listinfo/css-d
IE7b2 testing hub -- http://css-discuss.incutio.com/?page=IE7
List wiki/FAQ -- http://css-discuss.incutio.com/
Supported by evolt.org -- http://www.evolt.org/help_support_evolt/

Reply via email to