Еще один способ решения проблем полупрозрачных PNG в IE6 — DD_belatedPNG.
DD_belatedPNG использует VML вместо AlphaImageLoader. Соответственно способ не обладает минусами присущими применению фильтра. Инструмент позволяет использовать свойства background-position и background-repeat, а также псевдо-класс :hover. Ссылки и элементы форм в блоке с полупрозрачным фоном остаются кликабельны.
Использовать скрипт очень просто:
- Скачайте javascript файл (сжатая версия — 7Kb).
- Подключите его к странице.
- Укажите какие элементы необходимо исправить.
<!--[if IE 6]> <script src="DD_belatedPNG.js" type="text/javascript"></script> <script type="text/javascript"> DD_belatedPNG.fix('.png-elem'); </script> <![endif]-->
Для fix() требуется указать CSS селектор исправляемого элемента. Если необходимо исправить несколько элементов, нужно указать их через запятую.
На первый взгляд хорошая альтернатива IE PNG Fix, который я использовал раньше.
P.S. На днях ко мне обратился Руслан и предложил взять интервью для своего блога о блогах. Собственно читайте кому интересно. До меня кстати интервью давал Dimox.




Непременно пригодится. В закладки.
значит мистер инкогнито – это у нас Руслан, который ak*uba? =)
Насчёт его ника не в курсе.
[...] View post: Полупрозрачные PNG в IE6 с помощью DD_belatedPNG « AI: HTML, CSS и мног… [...]
Что-то у меня в ie6 не работает демо пример, вы сами хоть проверяли?
http://s55.radikal.ru/i148/0908/09/264b76579163.jpg
Естественно проверял. Посмотрите примеры на официальной странице.
Firefox:
http://i016.radikal.ru/0908/c3/09c5be6ccd45.jpg
Ie6:
http://s50.radikal.ru/i129/0908/a4/e12dd7744986.jpg
Найдите десть отличий! Не работает, если у меня не работает значит у кого еще не будет работать, поэтому решение не подхолдит!
А у вас случаем javascript не отключён?
Всегда работало, а у вас не работает… ну-ну
Но ведь я же не нарисовал скриншоты, может быть проблема в том что у меня стоят и ie6 и ie7, на других компьютерах проверял работает. Так что я не зря говорю!
проблема непосредственно с вашим компом, а не со скриптом.
скрипт работает отлично и лучше чем IE PNG Fix
блин, я вот недавно ридер почистил, из 45 блогов оставил 7. твой в их числе. один из самых полезных блогов которые я когда либо встречал.
у меня как то не сработало.. возможно что то не учла, хотя проверила код.. радует то что падает количество пользователей шестой версии, и думаю что после Винь7 станет их еще меньше.. так что еще годик и редко кого встретишь за шестеркой
Пробовал. Помогает:).Зачёт
пол года как пользуюсь этим скриптом. Нареканий нет. Удобно и эффективно
Иногда возникают проблемы в IE6 когда фон отображается кусками в сложной вёртске, в остальном уже месяца 4 работает нормально у меня.
DD_belatedPNG.fix(‘.png-elem’); – вот это лучше в конец скрипта прописать, поскольку пока скрипт не загрузится, прозрачности не будет.
Да и код страницы красивее.
Вася, вырежи PNG гамму, юзай например TweakPNG или любую другую прогу. Не позорьтесь.
О чем вы, товарищ?
А как же быть когда необходимо создать Rollover?
Фотовая картинка для IE6 прописывается ведь через vmlBg при загрузке страницы.
Есть мысли на этот счет?
Посмотрите на демо страницу, там есть пример с
:hoverу ссылки.я говорю о Rollover, т.е. когда при наведении на картинку (png) появляется другая картинка, которая в одном спрайте, т.е. меняется position-relative.
в Вашем примере (.png-link:hover{background:red} ) background-image заменяется background-color
Сделать спрайт фоном, не подойдёт?
я фоном и делаю.
Только вот position-relative не меняет картинку для ie6 при эффекте ролловера. Насколько я понял, position-relative для ie6 работает только при загрузке страницы и записывает созданный vml через vmlBg
Если спрайт в качестве фона, то тогда нужно менять не позиционирование а расположение фона у ссылки. Добавил в примере спрайт у ссылки, посмотрите.
да уж, опечатался, конечно же я применяю расположение фона background-position
Не могли бы Вы у себя в примере не заменять одну картинку на другую, а менять background-position у фоновой картинки. Т.е. надо вначале сделать спрайт состоящий из двух картинок, и при наведении менять видимую область спрайта.
Вот именно это у меня и не получается сделать.
А в примере именно так и сделано сейчас. Одно фоновое изображение, которое при наведении меняет позицию.
а Вы смотрели свой пример в ie6 ?
Смотрел.
Что-то не так с примером в IE6?
даже на локалке страница грузится минут 5 а то и дольше
У меня грузится в обычном режиме. Посмотрите официальные примеры.
там нет примера со спрайтом и сменой background-position при :hover
Я имел ввиду проверить там скорость загрузки.
в официальных примерах грузится быстро, но там не применяется background-position при :hover, а у Вас сейчас применяется. Возможно в нем причина
Сомневаюсь что проблема в этом, как уже заметил у меня скорость загрузки не изменилась. Думаю если бы скрипт обладал подобным минусом, о нем было бы написано.
А я где то уже читал о том, что скрипт себя некорректно ведет, когда установлено несколько версий ie одновременно. Это как раз мой случай. У Вас сколько IE стоит?
Стоит 8-я версия. Для остальных использую IETester или Virtual PC с ie6.
[...] http://www.alexilin.ru/png-and-ie6-with-dd_belatedpng/ – ещё один png-fix для IE [...]
Спасибо большое, все работает отлично!
о, спасибо, искал альтернативный метод прозрачности пнгшки!
Все работает. Спасибо. Гораздо лучше, чем IE PNG Fix. Отлично пашет с бэкграундами.
а подскажите, пожалуйста, можно ли прописать скрипту отрисовку пнгхи, которая стоит на бг, например, в a:hover span?
Можно.
Использую DD_belatedPNG для некоторых прозрачных png на сайте http://asia.site-plus.ru. Похоже все работает. Если обновить страницу, то все прозрачные картинки отображаются нормально, но если кликнуть по ссылке еще раз, то прозрачные png, обработанные DD_belatedPNG не отображаются.
Никто не сталкивался с подобной проблемой? Как это решается.
Для примера можно посмотреть страницу: http://asia.site-plus.ru/ru/about/
отлично решение , спасибо
До этого использовал PNG Behavior ….
Есть баг у этого скрипта: создайте несколько одинаковых дивов с одним и тем же классом, и идущими подряд, друг за другом. В класс пропишите фоновое изображение. Подключите скрипт к диву… В итоге получится что фоновое изображение появится только в первом диве, остальные дивы будут пустыми.
Надеюсь этот баг быстро поправят.
Покопав код скрипта понял как этот баг обойти (не исправить, а именно обойти), чтоб всё работало как часы. Вот код с использованием фреймворка jQuery:
$(function(){
var els, a;
els = $(‘*’);
for(a=0; a<els.length; a++) {
DD_belatedPNG.fixPng(els[a]);
}
}
Найден баг: скрипт не срабатывает,если PNGшка назначена фоном для ячейки таблицы.