Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Html/css, ошибка в IE6 (https://forum.antichat.xyz/showthread.php?t=69649)

байкал 07.05.2008 09:47

Html/css, ошибка в IE6
 
Мне надо показать прозрачное PNG изображение. Работает во всех браузерах, кроме осла.

Буду благодарен за любую помощь.

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if lt IE 7]>
        <script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->
</head>

<body bgcolor="white">
<img src="128_003.png" alt="#########" width="55" height="10" border="0" alt="####" > </img>
</body>
</html>

pngfix.js:
Код:


/*
 
Correctly handle PNG transparency in Win IE 5.5 & 6.
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.

Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->

*/

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

if ((version >= 5.5) && (document.body.filters))
{
  for(var i=0; i<document.images.length; i++)
  {
      alert("FUNCTION EXECUTING");
          var img = document.images[i]
      var imgName = img.src.toUpperCase()
      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
      {
        var imgID = (img.id) ? "id='" + img.id + "' " : ""
        var imgClass = (img.className) ? "class='" + img.className + "' " : ""
        var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
        var imgStyle = "display:inline-block;" + img.style.cssText
        if (img.align == "left") imgStyle = "float:left;" + imgStyle
        if (img.align == "right") imgStyle = "float:right;" + imgStyle
        if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
        var strNewHTML = "<span " + imgID + imgClass + imgTitle
        + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
        + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
        + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
        img.outerHTML = strNewHTML
        i = i-1
      }
  }
}


Naydav 07.05.2008 12:30

Цитата:

PNG изображения не очень широко используются в веб-дизайне, и тому есть серьезная причина. До выхода IE7 нельзя было сказать, что преимущества PNG хорошо используются основными браузерами. Но, начиная с 7-ой версии, IE имеет полную поддержку PNG, а с помощью небольшого количества JavaScript и CSS можно заставить старые браузеры корректно отображать полупрозрачные PNG, теперь самое время пополнить свой дизайнерский арсенал еще одним инструментом.
Креативное использование полупрозрачных PNG в веб-дизайне
Jeff Croft, 23 июня 2007

Можно попробывать:

PHP код:

function correctPNG() 
   {
   for(var 
i=0i<document.images.lengthi++)
      {
      var 
img document.images[i];
      var 
imgName img.src.toUpperCase();
      if (
imgName.substring(imgName.length-3imgName.length) == "PNG")
         {
         var 
imgID = (img.id) ? "id='" img.id "' " "";
         var 
imgClass = (img.className) ? "class='" img.className "' " "";
         var 
imgTitle = (img.title) ? "title='" img.title "' " "title='" img.alt "' ";
         var 
imgStyle "display:inline-block;" img.style.cssText
         if (
img.align == "left"imgStyle "float:left;" imgStyle;
         if (
img.align == "right"imgStyle "float:right;" imgStyle;
         if (
img.parentElement.hrefimgStyle "cursor:hand;" imgStyle;
         var 
strNewHTML "<span " imgID imgClass imgTitle
         
" style=\"" "width:" img.width "px; height:" img.height "px;" imgStyle ";"
         
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
         
"(src=\'" img.src "\', sizingMethod='scale');\"></span>"
         
img.outerHTML strNewHTML;
         
i-1;
         }
      }
   }
 if (
is_IE<7correctPNG(); 


mff 07.05.2008 20:03

Всё очень просто!
IE 7 и выше нормально отображает png, а вот ниже - всё плохо.
Для коректного отображения png в IE6 и ниже используй сей код в шапке:

Код:

<!--[if lt IE 7]>
        <![if gte IE 5.5]>
        <script type="text/javascript" src="fixpng.js"></script>
        <style type="text/css">
        .iePNG{filter:expression(fixPNG(this));}
        </style>
        <![endif]>
        <![endif]-->

файл fixpng.js:
Код:

function fixPNG(element) {
        if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
                var src;
                if (element.tagName=='IMG') {
                        if (/\.png$/.test(element.src))
                {
                src = element.src;
                element.src = "img/blank.gif";
                }
        }
        else {
                src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i)
                if (src) {
                        src = src[1];
                        element.runtimeStyle.backgroundImage="none";
                }
        }               
        if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
        }
}

В папке img должен лежать прозрачный gif blank.gif 1px на 1px

Далее во всех тегах, которые содержат путь к png пропиши - class="iePNG"

Всё! ;)

байкал 07.05.2008 20:15

Всё равно не получается. Может у меня PNG как нибудь не так закодирован? Внизу изображение, которое мне надо использовать:
http://img167.imageshack.us/img167/6548/128003ld5.png

mff: не заметил твой пост, сейчас попробую

mff 07.05.2008 20:32

Попробуй, попробуй! 100% рабочий вариант! Вот пример- http://aurveda.info
Недавно верстал из пингов и без таблиц.

Там же кстати и gif забери - http://aurveda.info/img/blank.gif


Время: 06:37