[Javascript] transparent png
Nick Fitzsimons
nick at nickfitz.co.uk
Tue Jul 11 04:49:56 CDT 2006
Troy III Ajnej wrote:
> IE was hoping not to mess with PNG rights and patents, so they introduced
> filters since IE4x
I'm not sure why you feel this compulsive need to pretend that Microsoft
isn't responsible for its own failings (even Bill Gates has admitted
that they dropped the ball on IE) but PNG was never surrounded by rights
and patents issues, being an open W3C standard. Your assertion is made
even more preposterous by the fact that Michael Stokes of Microsoft was
one of the authors of the PNG standard:
<http://www.w3.org/TR/PNG/#F-Relationship>
> try this: (CSS)
> filter:alpha(opacity='50') //half
> or if you like discrete-color full transparency:
> filter:chroma(color='#0000ff') //blue
Neither of these has anything to do with PNG alpha transparency, which
is what Schalk was asking about. I'll respond to his original enquiry
below...
> > Does anyone know of a definitive way of making transparent png work in
> > IE 6-. I am using http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html
> >
> > But as of now I cannot confirm that it works. It may be because I have
> > IE7 installed on the same system but according to the IE blog this
> > should be backwards compatible, so I am curious. Thanks!
> >
> > --
> > Kind Regards
> > Schalk Neethling
Schalk,
It depends on whether you are looking to get PNGs working as a
background image through CSS, or as an inline image using the <img> element.
In the "background-image" case you will find that IE's limited support
for alpha transparency via the AlphaImageLoader means that not all
designs can be implemented with ease, or at all; for more details, have
a look at my recent post to the css-discuss mailing list:
<http://archivist.incutio.com/viewlist/css-discuss/76522>
For the "<img>" case, there's an older post to css-d on the subject:
<http://archivist.incutio.com/viewlist/css-discuss/72894>
For examples of this in action without needing an HTC file or any
JavaScript, you could have a look at
<http://www.gwrfmbristol.co.uk/showsanddjs>
On that page, the images of the DJs are done with <img> elements, and
the gradient backgrounds are background PNGs going from 100% transparent
to 0% transparent. Due to some limitations of the content management
system (which powers nearly 40 local radio station web sites using that
design here in the UK), the appropriate CSS and the hacks to get IE
working properly are in the source of the page, within IE-only
conditional comments (one of the good things about IE). So if you view
the source and have a look at the CSS files, you should be able to work
out what's going on.
Note that there's no JavaScript - I wanted the designs to work even with
JavaScript off, and the various HTC files, or "behaviors", that people
have created don't work without JS. However, if a JS-only solution is
acceptable for your purposes, understanding the content of those two
css-d posts and that page will enable you to better determine whether
the behavior you are using is doing its job. A useful tool is the IE Web
Developer toolbar: while nowhere near as capable as the Firefox
equivalent, it will allow you to see whether the necessary filters are
being applied. See:
<http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en>
One common problem with getting the IE filters working is that the
element to which they are applied must have had its "hasLayout" property
triggered; see
<http://www.satzansatz.de/cssd/onhavinglayout.html>
and
<http://msdn.microsoft.com/library/en-us/IETechCol/cols/dnexpie/expie20050831.asp>
for more on that.
IE7 supports PNG transparency correctly, so the conditional comments
make sure the fixes are only applied to IE 6 and below. They won't work
at all on IE less than 5.5, as the AlphaImageLoader was only introduced
with 5.5.
Oh, and if you have IE6 and IE7 installed side-by-side on the same
machine you'll have real trouble getting anything working reliably:
Microsoft have explicitly stated that they don't support side-by-side
installation, and the interactions between the two are unpredictable,
particularly when code tries to determine which version it's running on.
HTH,
Nick.
--
Nick Fitzsimons
http://www.nickfitz.co.uk/
More information about the Javascript
mailing list