Internet-Explorer

Transparente PNGs im Internet Explorer 6

10. September 2007
von

Früher war vieles besser: Beim Umsetzen eines Layouts in (X)HTML verzichteten Web-Entwickler und Designer, soweit es nur ging, auf den Einsatz von transparenten Grafiken im PNG-Format und nahmen somit die Einschränkungen bei der Gestaltung einer Webseite in Kauf. Der Verantwortliche für diesen Ausnahmezustand war sich keiner Schuld bewusst. Internet Explorer 6 und seine in der Versionsnummer jüngeren Brüder konnten und können bis dato keine transparenten PNGs fehlerfrei verarbeiten und darstellen.

Die augenblickliche Welt sieht ganz anders aus. Die modernen Browser, darunter auch der Platzhirsch Internet Explorer 7, sind in der Lage komplexe Layouts verbindlich darzustellen, auch wenn PNG-Bilder zum Bestandteil des entworfenen Designs werden. Auf dieser Grundlage entfaltet sich die Kreativität, gestalterische Freiheit nimmt ihren Lauf – elegante Designumsetzungen sind die blumigen Folgen.

Leider sind die älteren Versionen des Internet Explorer unter den Nicht-Power-Nutzern noch stark verbreitet und lassen so ungewollt stilvolle Webseiten „alt“ aussehen. Nur wegen der PNG-Grafiken mit einem Transparenzfaktor, die auf der Seite ihre Verwendung finden. Höchste Zeit also über einen effektiven Workaround für alle IE-Versionen kleiner 7 nachzudenken.

drweb logo unfixed foto
Dr. Web Logo als transparentes PNG im IE 6

Als Lösung kursieren im Internet unterschiedliche Ansätze, die mehr oder weniger wirkungsvoll und unterschiedlich schwer zu implementieren sind. Die einfachste Methode ist der Gebrauch einer sogenannten HTC-Datei, die im Inneren über einen leicht verständlichen JavaScript-Code verfügt und bei Verarbeitung mit Microsoft-internen Filterfunktionen hantiert. Die besagte Datei trägt einen vielversprechenden Namen iepngfix.htc und wird per Copy&Paste aus dem ZIP-Archiv entnommen, welches auf der Download-Seite des Fix-Entwicklers Angus Turnbull zur Verfügung steht. Somit wäre die erste und die schwierigste Maßnahme von insgesamt zwei abgehackt.

Im zweiten Schritt muss lediglich eine entsprechende CSS-Definition – alternativ inline im (X)HTML-Code oder im externen CSS-File – festgelegt werden, welche den nicht ganz zeitgemäßen Browser dazu bewegt, die im Hauptverzeichnis des Projektes abgelegte HTC-Datei bei der Formatierung zu berücksichtigen und anzuwenden. Und das geschieht nach folgendem simplen Muster:

PNG-Fix auf alle Elemente anwenden

 {
  behavior: url(iepngfix.htc);
}

PNG-Fix nur auf Inline- und im Div vorhandene Hintergrundgrafiken anwenden

      img, div {
  behavior: url(iepngfix.htc);
}

Wahlweise kann der Fix-Aufruf auch direkt in CSS-Klassen notiert werden und muss nicht unbedingt für alle grafische Objekte geltend gemacht werden (wie im letzten Code-Beispiel vorgeschlagen). Prima klappt die offerierte Lösung auch mit transparenten PNG-Bildern, die per StyleSheet als Hintergrund eines Bereichs deklariert sind. Doch Vorsicht: Soll diese Hintergrundgrafik mittels repeat-Eigenschaft vertikal und/oder horizontal wiederholt werden, so kommt es gar nicht zum gewünschten Effekt und das Bild erscheint nur ein einziges Mal. Bedauerlicherweise ein unschöner Nebeneffekt des Fixes.

drweb logo fixed foto
Gleiches Logo mit eingespieltem PNG-Fix für IE 6

Unterm Schlussstrich ist der besprochene Ansatz eine simple Lösung, das anspruchsvolle Layout mit Alpha-PNGs auch auf älteren IE-Versionen schick (und durchsichtig) aussehen zu lassen. ™

Erstveröffentlichung am 10.09.2007

11 Kommentare zu „Transparente PNGs im Internet Explorer 6

  1. [...] mich, dass es geholfen hat . Wegen PNG und IE6: z.B. dieser Link – es gibt noch viele andere, aber der sollte auch reichen. __________________ </andy> [...]

  2. Marco3993.de am 7. März 2009 um 22:19

    Danke sehr ;) läuft 1A ;)

  3. Frank Burek am 1. April 2009 um 22:29

    Das “blank.gif” findet im Text keine Beachtung, ist aber wichtig, weil sonst über einer PNG (keine HG Grafik!) ein Platzhalter eingeblendet wird.

  4. [...] Transparente PNGs im Internet Explorer 6 [...]

  5. [...] Artikel von Dr. Web, der mich auf die richtige Spur gebracht hat Datum: 30.07.2009, 9:57 Uhr | Kategorien: Allgemein [...]

  6. Maria am 18. August 2009 um 17:59

    Wie Frank Burek zuvor schon schrieb, wird bei mir im IE 6 das Symbol für eine fehlende Grafik angezeigt (rotes Kreuz). Außerdem wird ein Rahmen drumherum gelegt, den ich weder mit boder=”0″ im HTML-Code (direkt im img-Tag) noch in der Styles-Datei (an den verschiedensten Stellen) weg bekomme. Gibt es dafür eine Erklärung oder ein Work around?

    Hab das png alternativ nun als Hintergrundgrafik in einem div positioniert, wo es nun korrekt angezeigt wird.
    Werde mir diesen Lösungsansatz jedenfalls gut merken.

  7. Andre Lanius am 7. September 2009 um 19:22

    Bei mir hatte es wunderbar geklappt … danke!

  8. Papapetros am 13. Oktober 2009 um 12:00

    Bei mir auch!

  9. Picard am 22. Dezember 2009 um 20:17

    Kleine Korrektur:
    Background Grafiken können mithlife des beigelegten Javascripts “repeated” und ausgerichtet werden.

  10. Michael Janik am 3. Februar 2010 um 14:15

    Leider kann ich mit dieser Lösung meine Bilder nicht mehr auf 100% Höhe skalieren. Oder weiß das jemand eine Lösung für.

    • firehorse am 25. August 2010 um 09:04

      Verzichte auf die Datei und nehme CSS oder ein JS-Skript.

      CSS gibt es hier und ist schon seit ewigen Zeiten bekannt:

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

      Vorsicht: Vadilierung streikt. Deshalb besser eine Extra Datei für den IE (ausgelagert), wenn möglich. Letzteres, weil problematisch beim Einsatz eines CMS. Da würde ich dann zum Skript greifen oder leider völlig auf transparente Grafiken verzichten.

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!

*