Die verschiedenen Techniken zur Anwendung des PNG Hacks

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Alpha-transparente PNGs („PNG-24“ für diejenigen, die sie aus Photoshop speichern) sind für Webdesigner eine wunderbare Sache. Wir können einen Button mit einem Schlagschatten erstellen, und dieser Schatten wird auf alles darunter liegende multipliziert, selbst wenn sich der Hintergrund ändert. Dies mag trivial erscheinen, ist es aber nicht. Die Möglichkeiten, die Alpha-Transparenz einem Designer eröffnet, sind vielfältig. Das Problem ist, wie Sie wahrscheinlich gut wissen, dass Internet Explorer (IE < v7) keine Alpha-transparenten PNGs unterstützt. Je mehr man darüber nachdenkt, desto trauriger wird es. Glücklicherweise gibt es im Laufe der Jahre einige Methoden, die uns helfen, diese älteren Versionen von IE in Form zu bringen. Hier ist eine Zusammenfassung einiger dieser Techniken.

HINWEIS: Alle diese Techniken verwenden letztendlich den Microsoft AlphaImageLoader-Filter, um die Transparenz zu erzwingen. Die Techniken variieren nur darin, WIE und WANN dieser Filter angewendet wird.

 

Verwendung des AlphaImageLoader-Verhaltens für spezifische CSS-Klassen

alphaimageloader.png
Internet Explorer unterstützt eine „benutzerdefinierte Erweiterung“ von CSS in Form eines „behaviors“-Attributs. Keiner der anderen großen Browser unterstützt dies, was es Ihnen ermöglicht, den Vorteil der Browser-Spezifität zu nutzen, um diesen PNG-Hack nur auf Browser anzuwenden, die ihn benötigen. Diese Technik verwendet einen großen, hässlichen Block nicht validierender CSS, der im Wesentlichen den AlphaImageLoader-Filter verwendet, um die Transparenz zu erzwingen.

Denken Sie daran, dass es zwei Stellen gibt, an denen Sie möglicherweise Transparenz anwenden müssen: auf Inline-Grafiken (<img>) und auf CSS-Hintergrundbilder. Mit dieser Technik könnten Sie das Verhalten auf eine bestimmte CSS-Klasse (wie „.png“) anwenden und diese Klasse dann selektiv dort anwenden, wo sie benötigt wird, ODER Sie könnten das Verhalten global auf alle img-Elemente anwenden.

Beachten Sie auch, dass dies zwar für CSS-Hintergrundbilder funktioniert, aber nicht funktioniert, wenn das Bild auf irgendeine Weise wiederholt oder positioniert wird.

MEHR ZU DIESER TECHNIK
Komodo Media: Ersetzen von Bildern durch Hintergrundbilder
SNIPPLR: Verwendung eines Filters für IE und eines Attributselektors für Mozilla

 

Verhalten und Verweis auf eine HTC-Datei

htc-method.png
Das Beste an dieser Technik ist, dass sie mit einer einzigen Zeile in Ihrer CSS-Datei auskommt, die auf diese „.htc“-Datei verweist, und Sie sind fertig. Das Verhalten wendet auf magische Weise den notwendigen proprietären Microsoft-Kram auf die benötigten Seitenelemente an, und Sie haben Alpha-transparente PNGs in IE.

MEHR ZU DIESER TECHNIK
Twin Helix: IE PNG Fix

 

Verwendung von Javascript

js-ail.png
Da JavaScript die magische Fähigkeit hat, alle Elemente auf Ihrer Seite zu überwachen und zu durchforsten, kann es ideal sein, um nach allen angewendeten Klassen auf Ihrer Website zu suchen. Es gibt ein paar wirklich überzeugende Gründe, diesen Weg zu gehen. Erstens können Sie das JavaScript bedingt nur für die IE-Versionen anwenden, die es benötigen. Zweitens ist es genauso „einstellen und vergessen“ wie die HTC-Methode. Drittens ist daran nichts ungültig, sodass Sie sich keine Sorgen machen müssen, dass Ihr Code oder CSS die Validierung nicht besteht. Viertens hat JavaScript die Fähigkeit, „neue“ Inhalte zu sehen, die einer Seite hinzugefügt werden (denken Sie an AJAX), und entsprechend zu handeln. Die vorherigen Techniken funktionieren nur beim ersten Laden der Seite.

MEHR ZU DIESER TECHNIK
24 Ways: Superslight
PNGHack auf Google Code