Скорее всего, это «лучший» способ. Но имейте в виду, что это не просто альфа-транс, который IE6 не реализует должным образом, когда дело доходит до файлов PNG; цветовое пространство повреждено из-за того, что IE не реализует гамму должным образом, и поэтому файлы PNG часто отображаются «темнее», чем должны.
Одним из альтернативных «решений», которое мы реализовали в недавнем проекте, было пометить каждое изображение png классом «toGif», в CSS которого вызывается пользовательское поведение .htc, которое изменяет расширение .png на .gif, если браузер мы обнаружили, что мы отметили проблему. Мы просто включаем GIF-версию каждого PNG вместе с ним в тот же путь, и если обнаруживается, что браузер не обрабатывает PNG должным образом, он заменяет его GIF-версией изображения. Поэтому мы жертвуем альфа-смешиванием в пользу гарантированной полной прозрачности и точности цветопередачи и делаем это только тогда, когда знаем, что, вероятно, все будет выглядеть не так, как есть.
Возможно, это не идеальное решение, но я полагаю, что это кросс-браузерная природа.
Изменить: На самом деле теперь, когда я смотрю на рассматриваемый проект, мы использовали поведение .htc для класса img под названием «alpha», который автоматически выбрасывает правильный фильтр на изображение. Таким образом, вы обнаруживаете браузер, используя javascript вместо чистого CSS-хака, предназначенного только для IE6, поэтому он может быть немного более элегантным ... но это в основном то же самое.
Чтобы узнать, как написать поведение DHTML, попробуйте эту ссылку .