IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Webdesign & Ergonomie Discussion :

Transparence des images PNG sous Internet Explorer


Sujet :

Webdesign & Ergonomie

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 85
    Points : 65
    Points
    65
    Par défaut Transparence des images PNG sous Internet Explorer
    Bonjour,

    J'ai crée des PNG transparents sous Gimp 2.2 (linux) mais sous Internet Explorer 6 sous Windows ils ne sont pas transparent (soit un fond noir soit un fond blanc) alors qu'ils le sont partout ailleurs :
    Mozilla 1.7 Win/Linux OK
    Ie 5 Mac Os OK
    Safari Mac Os OK
    IE6 Windows : NON

    Comment faire pour créer des PNG transparents qui fonctionnent sous IE6 ? Y'a t'il des options particulières à mettre ? (j'iai bel et bien activé la transparence lors de l'enregistrement !)

    Merci de votre aide.
    "Software is like sex, it's better when it's free" -- Linus Torvalds

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    La question serait plutôt IE gère-t-il correctement le PNG ???

    une solution, mais gare à la désactivation du js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <script language="JavaScript" type="text/JavaScript">
     
    function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
       {
       for(var i=0; i<document.images.length; i++)
          {
       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
          }
          }
       }
    window.attachEvent("onload", correctPNG);
    </script>

    ou alors utiliser du png 8, mais ça revient à faire du gif


    ps: je n'ai eu qu'à chercher sur et c'est dans les premiers liens trouvés
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    IE ne gère pas les PNG. Il ne gère pas non plus très bien le CSS 2, le (X)HTML et j'en passe
    Me demande ce qui peut motiver les gens sous windob à utiliser IE -_-
    Si je me rappelle bien, IE6 n'a pas été mis à jour sérieusement depuis 2001.

    J'ai moi aussi été aussi confronté à ce problème et en cherchant des solutions, je n'ai trouvé que des scripts longs et compliqués... comme ci-dessus.
    J'ai donc créé un script JavaScript assez simple qui ne pose apparemment pas de problème. Le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript"><!--
      //<!&#91;CDATA&#91;
        if &#40;navigator.appName.substring&#40;0, 3&#41; == "Mic"&#41;
          for &#40;i = 0; i < document.images.length; i++&#41;
            if &#40;document.images&#91;i&#93;.src.substring&#40;document.images&#91;i&#93;.src.length-3, document.images&#91;i&#93;.src.length&#41; == "png"&#41; 
            &#123;
              document.images&#91;i&#93;.style.height = document.images&#91;i&#93;.height + "px";
              document.images&#91;i&#93;.style.width = document.images&#91;i&#93;.width + "px";
              document.images&#91;i&#93;.style.filter = "progid&#58;DXImageTransform.Microsoft.AlphaImageLoader&#40;src=" + document.images&#91;i&#93;.src + ",sizingMethod='scale'&#41;";
              document.images&#91;i&#93;.src = "transparent.gif";
            &#125;
      //&#93;&#93;>
      //--></script>
    Le fichier "transparent.gif" est obligatoire. En réalité, c'est une image gif qui n'est autre qu'un pixel transparent.
    Pour que cela fonctionne, il faut aussi spécifier pour chaque image l'attribut width et height.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    j'ai aussi ce problème et ton script m'interesse.

    Je ne suis pas un pro... où je dois mettre le script ? dans ma page html contenant l'image ?

    Et le fichier transparent.gif, j'en créé 1 vide avec photoshop ? je créer juste un fichier en brut et je le renomme transparent.gif ?
    Concernant mes images PNG, je dois leur donner un nom particulier ?

    merci encore

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Tu dois mettre ce script entre les balises <head> et </head> de ta page HTML

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Je croyais avoir résolu mon souci avec ce code mais c'était compter sasn le map associé ... il n'est plus actif sous IE après le filter ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Bon alors pour ceux que ça intéresse ...


    j'ai collé provisoirement une rustine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       var useMap= (img.usemap)? "usemap='" + img.usemap +"' " : "";
    .

    je pense qu'il faudrait faire une boucle for in avec un switch pour passer en revue toutes les propriétés ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Argg...
    en fait ça ne resoud en rien mon problème ...

    il faut arriver à modifier le src de l'image de départ pour le remplacer par un gif entièrement transparent ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut
    le premier code est tres efficace mais ne s'applique pas sur les images en background

  10. #10
    Membre du Club Avatar de vovor
    Inscrit en
    Avril 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 119
    Points : 59
    Points
    59
    Par défaut
    De plus il faut ajouter que les utilisateurs passent progressivement à IE-7, qui gere enfin la transparence PNG... voir meme la transparence alpha (les images semies tansparentes, tres pratique pour creer un voile legerement transparent entre son fond et son texte).
    Donc il faudrait ajouter dans le script de verifier la version de IE. Sert à rien de le lancer pour les utilisateurs de IE-7.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut Transparence sous IE tout en CSS (ou presque)
    Aller un petit hack :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/mon_image.png',sizingMethod='scale')"> </div>
    Bien evidement si vous souhaitez avior 2 feuilles de style vous pouvez mettre dans votre header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!--[if lte IE 6]>
    <link href="ie6.css" rel="stylesheet" type="text/css" />
    <![endif]-->
    Avec la declaration du style ci dessus dans le fichier ie6.css

    Attention ceci ne fonctionne correctement qu'avec les petites images, et n'est pas fait pour les fond de pages
    enjoy

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Personnellement j'ai adopté ce script. Il gère très bien la transparence des PNG sous IE6. Il est aussi sensé gérer les Map mais là ça coince chez moi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    /*
    
    Correctly handle PNG transparency in Win IE 5.5 and 6.
    http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2005.
    
    Use in <HEAD> section with DEFER keyword
    wrapped in conditional comments thus: 
    
        <!--[if lt IE 7]>
        <script defer type="text/javascript" src="pngfix_map.js"></script>
        <![endif]-->
    
    This extended version includes imagemap and input image functionality.
    It also requires a 1px transparent GIF.
     
    */
    var strGif = "transparentpixel.gif"
    var strFilter = "progid:DXImageTransform.Microsoft.AlphaImageLoader"
    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++)
    	{
    	   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
    		  if (img.useMap)
    		  {  
    			 strAddMap = "<img style=\"position:relative; left:-" + img.width + "px;"
    			 + "height:" + img.height + "px;width:" + img.width +"\" "
    			 + "src=\"" + strGif + "\" usemap=\"" + img.useMap 
    			 + "\" border=\"" + img.border + "\">"
    		  }
    		  var strNewHTML = "<span " + imgID + imgClass + imgTitle
    		  + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
    		  + "filter:" + strFilter
    		  + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
    		  if (img.useMap) strNewHTML += strAddMap
    		  img.outerHTML = strNewHTML
    		  i = i-1
    	   }
    	}
    
       for(i=0; i < document.forms.length; i++) findImgInputs(document.forms(i))
    }
    
    function findImgInputs(oParent)
    {
       var oChildren = oParent.children
       if (oChildren)
       {
          for (var i=0; i < oChildren.length; i++ )
          {
             var oChild = oChildren(i)
             if ((oChild.type == 'image') && (oChild.src))
             {
                 var origSrc = oChild.src
                 oChild.src = strGif
                 oChild.style.filter = strFilter + "(src='" + origSrc + "')"
             }
             findImgInputs(oChild)
          }
       }
    }

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Spip utilise win_png.htc, qui fonctionne très bien

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2009, 15h33
  2. probléme d affichage d image sous internet explorer
    Par sebairo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 23/09/2008, 14h30
  3. Réponses: 3
    Dernier message: 19/10/2006, 11h45
  4. Largeur des select sous Internet Explorer 6+
    Par messier79 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 14/09/2006, 13h47
  5. Problème de calque transparent sous internet explorer
    Par Fred333.ver dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/12/2005, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo