2010-05-25 3 views
2

Я огляделся и решил использовать подход CSS, а не полагаться на JS ... Я полагаю, что корпоративные пользователи, застрявшие в IE6, также могут отключить JS ИТ-отделами.IE6 PNG-transparent CSS hack not working

Так в моем HTML у меня есть:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
<title>My Page</title> 
<link rel="stylesheet" type="text/css" href="default.css" /> 
<!--[if IE 6]><link rel="stylesheet" type="text/css" href="ie6.css"><![endif]--> 
</head> 

<body> 
    <img src="media/logo.png"/> 
</body> 

Тогда мой ie6.css просто состоит из:

img 
{ 
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...); 
} 

Однако никто из этого не делает ни малейшей разницы, нет прозрачности. Я прокомментировал всю оставшуюся страницу, так что это буквально тот, и все еще не повезло. Я удалил таблицу стилей default.css и до сих пор не вижу разницы.

EDIT: теперь я получил это работает, используя метод .htc, загружая файл в условном блоке тест IE6. Оказалось, что проблема была в том, что Windows 7 «заблокировала» файл (я даже не знаю, что это значит), и это заблокировало IE от его загрузки/использования.

ответ

1

Я использую решение следующей страницы:
Этого онлайн-демонстрацию online demonstration шага за шагом, ваш PNGs будет прозрачным и в IE.

+0

Я не понимаю. Его демо работает на моей IE6 VM, но когда я копирую-вставку, моя страница не работает. Я не вижу ничего плохого :( –

+0

Я переместил свой образ на тот же уровень, что и HTML, и скопировал все файлы. И он по-прежнему не работает.Я положил свой образ в свой тест, и это не работает. Я скопирую его код самопроверки на свою страницу и нажав на ссылку, появляется ошибка страницы: «IEPNGFix» не определен. Что еще от меня хочет? !! –

+0

О, это работает сейчас. Смотрите мое обновление ... не знаю, что это такое! –

3

Если я не ошибаюсь, вы должны использовать

progid:DXImageTransform.Microsoft.AlphaImageLoader(src='yourimage.png') 

для каждой и каждого изображения, вы не можете сделать это просто работать для всех изображений.

+0

Вы правы - только параметры javascript дают вам «мы все обработаем». –

+0

d'oh, я просто скопировал-вставить без понимания! –

+0

Как применить это для встроенных изображений? –

0

Вы, наверное, хотели бы, чтобы взглянуть на http://www.dillerdesign.com/experiment/DD_belatedPNG/

Это также позволяет использовать PNGs с альфа-каналом с CSS background-position собственности, которые вы обычно не могут, при использовании AlphaImageLoader.

1

На странице HTML вы имеете путь к изображению по отношению к HTML-файлу (media/logo.png) в default.css есть запись с behavior: url(iepngfix.htc); (путем к iepngfix.htc является относительно HTML-файл) и в ie6.css у вас есть запись с filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='media/logo.png', sizingMethod='scale'); с указанием пути к изображению относительно файла CSS. И по крайней мере, вы должны изменить путь в iepngfix.htc (IEPNGFix.blankImg = 'media/blank.gif';)

Вы должны иметь следующую структуру папок:

  • HTML файл
  • iepngfix.htc
  • ie6.css
  • default.css
  • /media/logo.png
  • /media/blank.gif
+0

Вы смешиваете два подхода. DXImageTransform не используется с HTC. Но во всяком случае, у меня есть blank.gif как родной брат HTML, а не в папке с медиа. Есть ли какая-то причина в том, что пустое место и .png должны находиться в одном месте, потому что кроме этого мои пути настроены правильно. –

+0

Это было просто возможное szenario, чтобы показать настройку файлов и путей. В моем приложении структура папок просто сложнее. Просто хотел показать простую конфигурацию для тестов;) –