IE6 et le PNG transparent
Tout web-développeur a déjà été confronté à ce problème : IE6 ne gére pas la transparence des PNG. De multiples solutions ont été inventées pour essayer d'y remédier.
Deux problèmes se posent :
- La gestion des images (balises <img>)
- La gestion des fonds (propriété CSS background-image)
Pour le problème des images, le script de ce site web fonctionne à merveille. Pour le problème des fonds de blocs, c'est une autre paire de manches... IE6 ne peut pas gérer les PNG transparents avec répétition (c'est impossible à corriger), mais tous les scripts que j'ai pu dénicher sur internet appliquent soit au cas par cas une règle (celle du filtre DirectX), soit de manière généraliste ce filtre sur toute image PNG (empêchant de la même façon l'utilisation de PNG non-transparents comme image répétitive).
Pour pallier à cela, j'ai donc codé un petit script à poser dans votre code, qui se chargera de gérer tous les fonds transparents non-répétés :
- if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent)
- {
- window.attachEvent("onload", alphaBackgrounds);
- }
- function alphaBackgrounds()
- {
- for (i = 0; i < document.all.length; i++)
- {
- var dai = document.all[i];
- var bg = dai.currentStyle.backgroundImage;
- if (bg && bg.match('/\.png"|\'\)$/i') != null)
- {
- var mypng = bg.substring(5, bg.length - 2);
- if (dai.currentStyle.backgroundRepeat == 'no-repeat')
- {
- dai.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, src='"+mypng+"', sizingMethod='crop')";
- dai.style.backgroundImage = 'none';
- }
- }
- }
- }
Comme vous pouvez le voir (ou pas), il faut que l'image PNG à traiter possède la propriété CSS background-repeat: "no-repeat" pour fonctionner. Cela permet d'éviter de dégommer tous les fonds PNG non-transparents qui pourraient se répéter.
Une inclusion de ceci entre les balises <head>, newpngfix.js étant le fichier contenant le script ci-dessus, et c'est gagné :)
- <!--[if gte IE 5.5]>
- <![if lt IE 7]>
- <script defer type="text/javascript" src="newpngfix.js"></script>
- <script defer type="text/javascript" src="pngfix.js"></script>
- <![endif]>
- <![endif]-->
A propos, photo.ornthalas.net fonctionne maintenant sous IE6 :) Pas sous IE5.5 : y'a des problèmes d'alignement, et je vais pas me faire chier pour les utilisateurs de windows 98, faut pas déconner non plus.
CSS dotNetsoul
J'ai refait la feuille de style de dotNetSoul, car elle était vraiment nulle.
Déjà que le logiciel vole vraiment pas haut, en plus la feuille de style de base est illisible. On se demande si la personne qui a codé le logiciel ne travaillait pas sur un écran en 640x480...
Ca peut en intéresser certains, donc la voici , à placer dans votre dossier d'install (typiquement dans C:\Program Files\dotNetSoul\Styles).
September 07
1
