При разработке шаблонов часто приходиться сталкиваться с проблемой использования PNG формата. Проблема заключается в неверном отображении PNG в интернет эксплорере IE 5.5 и 6. В этом обзоре приводятся большинство известных методов и хаков как заставить IE правильно работать с PNG.
Способы решения IE+PNG:
- С помощью CSS
- С помощью JavaScrrpt
- Решение на стороне сарвера
1. Работа PNG графики в IE5.5, 6 с помощью CSS
Решение заключается в использовании для IE фильтра AlphaImageLoader.
1. Вставляем CSS файл fix-ie6.css только для IE5.5 и 6 в разделе head html документа.
<link type="text/css" rel="stylesheet" media="all" href="/fix-ie6.css" />
<![endif]-->
2. Помечаем селектором(айдишником или классом) в каком контейнере будет png графика.
3. Описываем в общем файле стилей, например в styles.css, свойства контейнера #png_wrap.
background-image: url(/src/to/image/image.png) no-repat;
width:100px;
height:100px;
}
4. Прописываем в файле fix-ie6.css фон для этого контейнера с использованием фильтра AlphaImageLoader
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/src/to/image/image.png', sizingMethod='crop');
}
5. Если нужно добавить кликабельность контейнера, можно внутрь контейнера поместить прозрачный гиф внутри ссылки. Например:
<a title="Example" href="http://example.com">
<img title="Example" src="clear.gif" alt="Example" width="100" height="100" />
</a>
</div>
Недостатки решения AlphaImageLoader:
- Необходим дополнительный контейнер для каждой картинки.
Преимущества решения AlphaImageLoader:
+ Простота использования
+ Валидный код
Подробная информация про свойства фильтра AlphaImageLoader
2. Работа c PNG графикой в IE5.5, 6 используя JavaScript библиотеки
Существует огромное количество библиотек JavaScript для борьбы с проблемой IE и PNG. Они загружаются при полной загрузке страницы и обрабатывают png графику. Каким образом изменяют графику – это уже вопрос другого обзора. Теперь рассмотрим наиболее интересные варианты:
jquery.pngFix.js – плагин на основе API jQuery
Свойства плагина jquery.pngFix.js
- Работает с фоновыми изображениями
- Работает с кликабельными изображениями
- Работает с атрибутами alt, title, styles и class изображения
Установка:
- Скачать jQuery
- Скачать pngFix
- Подключить в заголовке head скаченные файлы
<script type="text/javascript" src="jquery-latest.pack.js"></script>
<script type="text/javascript" src="jquery.pngFix.js"></script> - Активировать плагин pngFix. Вставлять можно и в заголовок head и в тело страницы body
<script type="text/javascript">
$(document).ready(function(){
$(document).pngFix();
});
</script>
Недостатки jquery.pngFix.js
- Не всегда корректно позиционируется в IE
- забирает себе событие document.ready
Преимущества jquery.pngFix.js
+ легек в использовании и установке
+ с помощью селекторов в jQuery плагину можно указать чтоб он обрабатывал только картинки
ie7-js – Google JavaScript библиотека
Свойства плагина jquery.pngFix.js
- Работает только с изображениями
- Работает с кликабельными изображениями
- Работает с изображениями, которые имеют вид *-trans.png
Установка:
- Скачать Google ie7-js
- Подключить в заголовке head скаченный файл
<!--[if lt IE 7]>
<script src="IE7.js" type="text/javascript"></script>
<![endif]--> - Переименовать необходимые файлы в такой вид *-trans.png
Недостатки jie7-js Google
- большой размер (72 Кб)
- не работает с повторяющимся фоновым изображением
Преимущества jie7-js Google
+ очень прост в установке
IE PNG Alpha Fix
Свойства библиотеки IE PNG Alpha Fix
- Автоматическая активация прозрачности
- Работает с картинками
- Работает с фоновыми изображениями
- Поддерживает ролловеры
- Работает на основе .htc файла
- вставляет если нужно ссылку для кликабельности
Установка IE PNG Alpha Fix
- Скачиваем и разархивируем архив iepngfix.zip
- Копируем iepngfix.htc в любое место
- Прозрачный gif из архива копируем в корень сайта. Если же копируем в какую-то папку /folder/ , тогда в файле iepngfix.htc нужно указать путь к прозрачному гифу
var blankImg = '/folder/blank.gif';
- Указываем или в css или в html, какие контейнеры буду содержать png графику. Путь должен быть относительным к html фалу.
<style type="text/css">
img, div { behavior: url(folder2/iepngfix.htc); }
</style>
Недостатки IE PNG Alpha Fix
- работает на основе .htc
Преимущества IE PNG Alpha Fix
+ прост в установке и использовании
+ широкие возможности
3. Cерверные решения проблемы IE+PNG
Вся обработка страници по замене png записей происходит на стороне сервера с помощью php или другого языка. Примеров много. Вот одни из них:
replacePngTags.php от koivi.com
Установка
- Скачиваем архив http://koivi.com/ie-png-transparency.zip
- Копируем на сервер replacePngTags.php
- В файле в котором нужно работать с png графикой вставляем инициализируем функцию
<?php ob_start(); ?>
- В конце этого файла вставляем такой код:
<?php
include_once 'replacePngTags.php';
echo replacePngTags(ob_get_clean());
?>
Недостатки replacePngTags.php
- нагрузка на сервер
Преимущества replacePngTags.php
+ не нужно править html код, только добавить подключение функции в движок
Существует еще очень большое количество решений проблемы IE6 и PNG, но они уже являются вариациями и улучшениями сдесь перечисленных.

спасибо! отлично работает, делала 1. Работа PNG графики в IE5.5, 6 с помощью CSS
только ссылки внутри блока не работают((
Я рад что помогло. Буду и дальше писать обзоры
Спасибо, помог серверный вариант решения