JQuery цикл IE7 прозрачной PNG проблема - PullRequest
46 голосов
/ 21 июля 2009

Мне не удается заставить цикл jquery работать, когда у меня есть прозрачные файлы png в IE7

Это нормально в Firefox и Chrome, но в IE (версия 7) я получаю черный цвет, где png прозрачность во время затухания.

Можно ли сделать так, чтобы это работало правильно?

Ответы [ 23 ]

0 голосов
/ 12 августа 2010

Weezy решение сработало для меня!

Я доработал файл .htc и изменил эту строку:

var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);

до:

var bgPNG = bgSrc.match(/url[("']+(.*\.fixme.png[^\)"']*)[\)"']/i);

При этом скрипт .htc будет игнорировать все файлы .png , если они не заканчиваются на .fixme.png (например, «transparant.fixme.png»). Я намеревался немного ускорить работу скрипта и убедиться, что исправлены только проблемные файлы .png (те, которые вы должны иметь transparant).

Я использую другие файлы .png, которые не прозрачны, и поэтому мне не нужен этот скрипт для их запуска.

0 голосов
/ 22 мая 2012

Самое надежное решение - не использовать pngs в анимации в стиле затухания в браузерах <IE9.

Я испробовал почти все «исправления» и варианты доступных исправлений, которые я мог найти для этой проблемы, но безуспешно. Решение, которое я использовал, состояло в том, чтобы экспортировать png-файлы, к которым были применены анимации в стиле затухания (т.е. fadeIn / fadeOut), в gif-файлы и выполнить условную замену <IE9. Хотя GIF-файлы не выглядят так же хорошо, как png-файлы в современном браузере, они выглядят намного лучше, чем IE8 и более ранние версии png-файлов, и этот метод работает надежно. Вы по-прежнему можете отображать хорошие png-файлы для способных браузеров, и когда исправление применяется, ничего больше не нарушается; Известно, что большинство png-хаков нарушают другие свойства CSS. Ваш код может выглядеть примерно так:

$(document).ready(function ()
{
      if ($.browser.msie && parseInt($.browser.version, 10) < 9)
      {
          $(".myClass, .myOtherClass").each(function (val)
          {
              var backgroundValue = val.css("background-image");
              backgroundValue.replace('.png', '.gif');
              $(this).css("background-image", backgroundValue);
              //you could just as easily do this with 'img' tags
          });
      }
}
0 голосов
/ 16 августа 2010

Лучшее исправление - unitpngfix .

Включите его в свой сценарий и обязательно укажите путь к вашему 1px по 1px прозрачному gif. Voila!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...