Xpoint
   [напомнить пароль]

Полупрозрачный PNG-24 для Explorer

Метки: [без меток]
2004-12-05 23:30:32 [обр] lavan(0/7)[досье]

Нашёл интересное решение для отображения png файлов с альфа каналами в эксплорере:

<img src="i/alpha.png" width=100 height=100 style="BEHAVIOR: url(i/png.htc);">

png.htc:

<public:component>
<public:attach event="onpropertychange" onevent="propertyChanged()" />
<script>
var supported = /MSIE (5\.5)|[6789]/.test(navigator.userAgent) && navigator.platform == "Win32";
var realSrc;
var blankSrc = "i/1x1_tr.gif";

if (supported) fixImage();

function propertyChanged() {
   if (!supported) return;
   
   var pName = event.propertyName;
   if (pName != "src") return;
   // if not set to blank
   if ( ! new RegExp(blankSrc).test(src))
      fixImage();
};

function fixImage() {
   // get src
   var src = element.src;

   // check for real change
   if (src == realSrc) {
      element.src = blankSrc;
      return;
   }

   if ( ! new RegExp(blankSrc).test(src)) {
      // backup old src
      realSrc = src;
   }
   
   // test for png
   if ( /\.png$/.test( realSrc.toLowerCase() ) ) {
      // set blank image
      element.src = blankSrc;
      // set filter
      element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
                                     src + "',sizingMethod='scale')";
   }
   else {
      // remove filter
      element.runtimeStyle.filter = "";
   }
}

</script>
</public:component>
спустя 1 месяц 28 дней [обр] Игорь Лебедев(0/7)[досье]
Отлично работает!
Автору благодарность! :-)
спустя 2 дня 1 час [обр] Игорь Лебедев(0/7)[досье]

Скажите, а есть ли возможность повторить данный трюк для картинок PNG, но в том случае, когда они находятся в качестве фона?

Есть ли у фоновой картинки свойство-аналог "BEHAVIOR"?

Для полноты раскрытия вопроса проблемы PNG-картинок в IE, предлагаю рассмотреть фоновые картинки.

спустя 15 минут [обр] Алексей В. Иванов(0/2861)[досье]
Игорь Лебедев[досье] Вам же уже ответили! Ответ был полным. Все.
спустя 43 минуты [обр] Игорь Лебедев(0/7)[досье]

Алексей В. Иванов[досье] Ничего подобного, данное решение не работает с фоновыми картинками.

Я предложил довести решение до конца.

Может кто-то знает ответ?

Кстати, данный фрагмент кода позаимствован с сайта artlebedev.ru/best, по крайней мере там эти парни используют точно такой-же, слово-в-слово.

спустя 10 минут [обр] Алексей В. Иванов(0/2861)[досье]
Ничего подобного, данное решение не работает с фоновыми картинками.
Именно.
Мне казалось Вам ответили в другом посте. Если это не так, прошу прощения.
спустя 4 часа 59 минут [обр] lavan(0/7)[досье]
Я тоже страдаю от того, что оно не работает с фоновыми картинками. Если кто знает, дайте ответ плз.
спустя 2 дня 14 часов [обр] Игорь Лебедев(0/7)[досье]

Я разобрался, как можно делать прозрачные картинки в фоне.

Привожу ссылку, где про это можно почитать:
http://www.alistapart.com/articles/pngopacity/
К статье прилагаются работающие примеры, очень толково.

Есть одно НО - когда ставишь png в фон, с помощью метода, указанного в статье, картинка растягивается на размер объекта, в чей фон она ставиться. Т.е. если ячейка таблицы 90 * 110, а картинка 100 * 100, то картинка будет искажена 90 * 110.

lavan[досье] Может Вы сможете адаптировать пример, чтобы можно было ставить повторяющуюся картинку в фоне?

Powered by POEM™ Engine Copyright © 2002-2005