Testcase der neuesten PNG-Fix-Methoden [update]
Unser geliebter Internet Explorer 6 konnte bisher keine transparenten PNG-Grafiken darstellen. Mit diversen PNG-Fix-Methoden (JavaScript-Lösungen) konnte dies teilweise behoben werden. Ich habe ein Testcase mit den neuesten Methoden online gestellt.
Die PNG-Fix-Methoden haben bisher eher recht als schlecht funktioniert. In der Performance sind sie langsam, zumindest wenn man alle Bilder und DIVs fetched. Aber sie haben durch die Anwendung der filter-Methode von Microsoft die PNG-Grafiken im IE6 transparent dargestellt. Doch zwei Probleme blieben, egal bei welcher Methode / Fix: background-position und background-repeat hatte nie funktioniert. Während also “richtige” Browser das Hintergrundbild schön gekachelt oder positioniert angezeigt hatten, wurde das Bild im IE6 mit den Fixes zwar transparent angezeigt, aber eben nicht so, wie wir uns das gewünscht hatten. Das Problem: Die filter-Methode lässt die Attribute position und repeat schlicht nicht zu.
Neue Lösungen und Updates
Vor ein paar Tagen erblickte eine neue JavaScript-Lösung das Licht der Welt: Unit PNG Fix. Diese 1 kb kleine Lösung ist schmal, behebt aber die o.g. Probleme nicht. Viel schlimmer: Statt das Hintergrundbild zu kacheln, hat es dieses auf die volle Breite und Höhe gestreckt. Was vom Entwickler nett gemeint ist, ist in keinem Fall das, was wir sehen wollen.
Gerade gestern gab es ein Update des bekannten IE PNG Fix. In seinem Forum hatte Angus Turnbull die Version 2.0 Alpha 2 angekündigt, die nun endlich auch background-position und background-repeat unterstützen soll.

Der Testcase
Ich baute flink ein Testcase, der beide Methoden demonstrieren sollte. Bei dieser Seite zeige ich beide aktuellen Methoden im direkt Vergleich. Per Link kann man zwischen den beiden Varianten umstellen. Ich zeige ein inline-Element, und die beiden Problemfälle – jeweils mit einer Musterdarstellung aus dem Safari.
Dabei stellte ich eben fest, dass Angus eben lediglich die Alpha 1 zum download angeboten hatte, nicht aber die erwartete Alpha 2. Denn die erste Variante, so zeigte mein Testcase, hat die Bilder transparent dargestellt im IE6, sonst ging aber wieder nichts. Angus hat fix reagiert und die Alpha 2 online gestellt. Nun habe ich mein Testcase geupdatet, mit folgendem Resultat:
- Unit PNG Fix zeigt PNG-Bilder ohne Extra-CSS-Klasse transparent da, kann aber weder background-position, noch background-repeat.
- IE PNG Fix Alpha 2 zeigt transparente PNG, und beherrscht auch die Kachelung. Der Trick: Das JavaScript wiederholt die Darstellung des Hintergrundbildes von sich aus. Das geht natürlich auf die Performance. Wer stark frequentierte Webseiten mit vielen IE6-Usern administriert, sollte sich den Einsatz gut überlgen. Was weiterhin nicht geht, ist die Positionierung des Hintergrundbildes. Vielleicht kommt ja bald diesbezüglich auch noch ein Update.
Update
Nach Rücksprache mit Angus funktioniert IE PNG Fix sehr wohl mit background-postion, allerdings nur dann, wenn man die Positionierung in Pixel, Prozent usw. angibt:
Ah, I see! Currently background-position supports the units ‘px’, ’%’ and values like ‘left’, ‘center’ etc. Try them, they should all work! I have yet to implement ‘em’, ‘pt’ etc. etc. as they’re hard to calculate in the space of a couple of kilobytes and the whole script has to work in pixels to correctly tile a background
. -Angus.
1 Dennis Frank schrieb am 18. Juli 2008 (12:07 Uhr)
2 Andreas Stephan schrieb am 21. Juli 2008 (15:07 Uhr)
3 Milos schrieb am 27. Juli 2008 (22:07 Uhr)
4 Maximilian Böhm schrieb am 27. Juli 2008 (23:07 Uhr)
5 macx schrieb am 28. Juli 2008 (08:07 Uhr)
6 Tina H. schrieb am 31. Juli 2008 (08:07 Uhr)
7 macx schrieb am 31. Juli 2008 (08:07 Uhr)
8 Tina H. schrieb am 31. Juli 2008 (09:07 Uhr)
9 macx schrieb am 31. Juli 2008 (09:07 Uhr)
10 Tina H. schrieb am 31. Juli 2008 (10:07 Uhr)
11 Chris schrieb am 20. August 2008 (19:08 Uhr)
12 Sascha schrieb am 26. August 2008 (20:08 Uhr)
13 macx schrieb am 27. August 2008 (07:08 Uhr)
14 Mark schrieb am 07. Januar 2009 (00:01 Uhr)