Transparente PNG im Internet Explorer 6

Mittwoch, 9. April 2008 von: David Hellmann

Transprente PNG GrafikenWer kennt es nicht, man ist gerade voll bei der kreativen Arbeit in Photoshop und gestaltet wild drauf los. Irgendwann kommt der Zeitpunkt wo man mit seinem Ergebnis zufrieden ist und was fällt auf? Das fertige Design wird so nur funktionieren mit transparenten PNG24. Wie schon bekannt sein sollte haben die Macher vom Internet Explorer vor der Version 7 nicht all zu viel zeit daran verschwendet diese Feature einzubauen.

LIVE DEMO DOWNLOAD

Im klartext heisst das für den Entwickler: Mehrarbeit...

Da ich letztens vor genau diesem Problem stand habe ich Mr. Google bemüht und die ein oder andere Methode gefunden die dieses Problem lösen soll. Für mich war klar, dass die unkomplizierteste Lösung genommen wird. Hier das Ergebnis:

Die normale CSS Datei:

Die ie6.css ist nun zuständig dafür, dass der Internet Explorer, falls kleiner als Version 7, das transparente PNG in gewünschter Form darstellen kann.

...
#trans-box {
width:600px;
padding:50px;
margin:0 auto;
text-align:left;
background:url(../grafiken/trans_dark.png) repeat;
border:5px solid #ddd;
}
...
Die angepasste CSS Datei für den Internet Explorer 6:

In diesem Falle die style.css, hier einfach ganz normal die CSS Anweisungen reinschreiben für das Transparente PNG.

...
#trans-box {
background-image:none;
background:filter:progid:DXImageTransform.Microsoft.AlphaImageLoader
(src='grafiken/layout/trans_dark.png', sizingMethod='scale');
} ...
Browserweiche

Nun muss noch abgefragt werden wann diese ie6.css aufgerufen werden soll. In diesem Fall wenn der Benutzer eine Version des Internet Explorers benutzt die kleiner als die Version 7 ist. Das ganze schaut dann so aus:

...
<style type="text/css">
<!--
@import url("css/style.css");   
-->
</style>
<!--[if lte IE 7]>
<link href="css/ie6.css" rel="stylesheet" type="text/css">
<![endif]-->
</head>
HTML Teil

Jetzt muss das ganze nur noch dargestellt werden. Das könnte dann in etwa so aussehen. Hier ist nur der Teil gezeigt der die Box betrifft:

<body>
<div id="trans-box">
<h2>Tranparente Box</h2>
<p>
hier der text...
</p>
</div>
</body>

Das ganze in aktion könnt Ihr hier sehen:

LIVE DEMO DOWNLOAD

17 Kommentare

Eintrag schreiben

  1. 1 Jan Dienstknecht
    Am 9. April 2008 um 11:29 Uhr

    Gute Sache :)
    Danke!

  2. 2 Thomas Aull
    Am 9. April 2008 um 19:13 Uhr

    Was ist mit Lösungen wie supersleight?
    Da muss man nur eine Zeile Quellcode einfügen und es funktioniert ;-)

  3. 3 David Hellmann
    Am 9. April 2008 um 19:56 Uhr

    Weil ich ja eine Version ohne JS wollte und es eher für Backgroundimages ist gedacht war bei mir. Hatte einige Versionen getestet als das Problem bestand und befand diese hier für die beste.

    Aber es führen ja immer mehrere Wege nach Rom.

  4. 4 Thomas Aull
    Am 10. April 2008 um 23:02 Uhr

    Richtig :-)

  5. 5 Marvin
    Am 14. April 2008 um 23:04 Uhr

    Ich glaube du hast die bilder für die Überschriften “Die normale CSS Datei” und “Die angepasste CSS Datei für den Internet Explorer 6″ vertauscht! ;)

  6. 6 David Hellmann
    Am 14. April 2008 um 23:06 Uhr

    Danke! Ist geändert.

  7. 7 Marvin
    Am 14. April 2008 um 23:26 Uhr

    aber trotzdem sehr schöne anleitung, und sehr schöne demo files, hab ich vorher immer nicht hinbekommen! danke! ;)

  8. 8 David Hellmann
    Am 14. April 2008 um 23:34 Uhr

    Das freut mich, dankeschön! Mehr davon ist schon in Arbeit..

  9. 9 Tom
    Am 28. April 2008 um 12:59 Uhr

    Hast du mal gecheckt, ob das immernoch funktioniert wenn dynamisch per JavaScript Inhalte nachgeladen werden?
    Supersleight hat damit auf jeden Fall Probleme…

  10. 10 David
    Am 28. April 2008 um 13:03 Uhr

    Nein habe ich nicht probiert :) sollte aber denke ich kein Problem sein. Aber 100% sagen kann ich es nicht.

  11. 11 Dave
    Am 8. Mai 2008 um 07:47 Uhr

    Hmm…. auf diese Lösung bin auch schon öfters gestossen! Ist auch schöner als eine javascript Lösung. Nur bei mir hat das bis jetzt nicht funktioniert :-(! Was mach ich wohl falsch? Irgendwie wird bei mir im IE6, mit dieser Lösung, kein PNG Bild mehr angezeigt?! Das verstehe ich nicht… obwohl der Pfad stimmt!

    Vielleicht kann mir ja jemand helfen?!

  12. 12 Tom
    Am 8. Mai 2008 um 09:40 Uhr

    Hmm…stimmt, wenn ich mir das Beispiel im IE6 anschaue, funzts irgendwie auch nicht…

  13. 13 David
    Am 8. Mai 2008 um 10:16 Uhr

    Hab das Beispiel letztens verschoben in einen anderen Ordner, irgendwie passen die Pfade nicht mehr, bin aber gerade nicht zuhause. Wird aber geändert ;)

  14. 14 Dave
    Am 9. Mai 2008 um 07:38 Uhr

    na ja abgesehen vom pfad… bei mir will das irgendwie auch nicht! ich hatte da zwar auch schon etwas mit javascript probiert, dass hat auch prima funktioniert, hatte aber leider nebenwirkungen bzw. auswirkungen auf anderes und das ist unschön. diese lösung hier wäre ideal. nur irgendwie will das bei mir irgendwie nicht funktionieren!

    geht das den bei euch anderen ohne probleme? würde mich interessieren.

  15. 15 David
    Am 10. Mai 2008 um 06:48 Uhr

    also im moment geht die demo bei mir auch nicht aber warum kann ich gerade nicht sagen. ich weiß nur das es definitiv ging da ich es ja vorher getestet habe, auch im internet explorer 6

    sobald ich zuhause bin werde ich mich ran setzen!

  16. 16 Dave
    Am 15. Mai 2008 um 14:12 Uhr

    ich hab hier die lösung: man muss das ganze so eingeben:

    #PNGBILD {
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’bild.png’, sizingMethod=’scale’);
    background:none;
    }

    dann geht das ganze prima!! :-) zumindest bei mir hat es nun funktioniert!

  17. 17 David Hellmann
    Am 19. Mai 2008 um 14:00 Uhr

    Fehler ist behoben und es geht nun wieder. War wie zu erwarten nur ein Fehler bei der Pfadangabe zum Bild :)

    Danke noch mal für den Hinweis!

RSS-Feed für Kommentare zu diesem Beitrag. TrackBack URI

Kommentar schreiben