Nieprawidłowe wyświetlanie plików PNG w MS Internet Explorer
Nie jeden webmaster klął na Microsoft(R) za nieprawidłowe wyświetlanie przezroczystości plików PNG w przeglądarkach Internet Explorer - zamiast niej otrzymujemy szare tło. Jedyne co pozostaje to zastosować GIFa, który rzadko się do tego nadaje. Przezroczyste pliki GIF często są poszarpane, a ich jakość jest oczywiście niższa - to dlatego, że ich przezroczystość ma tylko 8 bitów. Myślałem, że tego nie da się obejść w inny sposób niż zaczekać aż IE będzie niszową, mało znaczącą przeglądarką, albo zostanie wypuszczona jego nowa, poprawiona wersja. A jednak...
Zostałem mile zaskoczony, gdy dowiedziałem się, że jest możliwe zmusić IE do prawidłowego pokazania plików PNG :D Do tego jest to bardzo proste i sprowadza się do wywołania specjalnego kodu JavaScript. Kod ten jest pomijany przez inne przeglądarki. Rozwiązanie niemal idealne ;)
W osobnym pliku js umieszczamy poniższy kod:
/*
Correctly handle PNG transparency in Win IE 5.5 & 6.
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.
Use in with DEFER keyword wrapped in conditional comments:
*/
var arVersion = navigator.appVersion.split("MSIE")var version = parseFloat(arVersion[1])
if ((version >= 5.5) && (document.body.filters))
{for(var i=0; i
{var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\">"
img.outerHTML = strNewHTML
i = i-1
}
}
}
Natomiast w kodzie html strony umieszczamy jego warunkowe dołączenie:
Prawid³owe wy¶wietlanie plików PNG w MS Internet Explorer
Obrazki PNG zostan± poprawnie wy¶wietlone w tym dokumencie tak¿e w Internet Explorer.
To wszystko!! Od tej pory ka¿dy do³±czony do strony plik png bêdzie wy¶wietlony prawid³owo w ka¿dej przegl±darce :)
¼ród³a:
- The PNG problem in Windows Internet Explorer
- Normal display of PNG Alpha Transparency with MSIE
- Poprawka wy¶wietlania plików PNG w IE
- PNG - Jak i dlaczego u¿ywaæ
- PNG Behavior
- Improved PNG Behavior
- JavaScriptowa biblioteka IE7
5 komentarzy
Napisz komentarz