Un des gros problèmes d’Internet Explorer est qu’il ne gère pas les degrés d’alpha des images PNG. Or, les PNG offrent des possibilités de transparence qui pourraient réellement donner un plus au niveau graphique. Malheureusement, la carence d’Internet Explorer freine considérablement son développement.
Pour comprendre ce qu’est une image PNG et sa non prise en compte par Internet Explorer, voici une petite illustration d’une image PNG affichée dans Firefox et Internet Explorer sur un fond rouge (#F00).
Remplacer le gris immonde d’Internet Explorer
Pour eviter d’avoir le gris par défaut qu’affiche Internet Explorer, il est possible de modifier les en-têtes de l’image PNG. Il set possible de définir par quelle couleur Internet Explorer remplacera la transparence alpha.
Pour ce faire il faut utiliser un petit logiciel tel que TweakPNG qui va permettre au navigateur de Microsoft d’afficher la couleur de votre choix.
Pour réaliser ce petit tour de passe-passe il vous suffit de suivre le tutoriel 32-bit PNG degradability in IE
sur Phonety.
Une solution efficace tant que votre image reste sur un fond uni de couleur.
Une solution pour simuler la transparence des PNG sous Internet Explorer
Pour palier à ce problème, il faut utiliser le filtre Microsoft ImageAlphaLoader
. Une parade un peu barbare mais efficace. Le principe est de remplacer les images PNG par des <div>
dont l’image PNG est établie en fond. Divers méthodes existent pour résoudre ce problème facilement à l’aide d’une petite fonction Javascript.
Quelques liens utiles :
- Avec un Javascript :
PNG in Windows IE: How To Use
- Avec un fichier HTC :
PNG Behaviour
- En CSS :
Cross-browser semi-transparent backgrounds (non valide).
Une solution pour les images PNG en background CSS
Ces astuces fonctionnent très bien pour les images présentes directement dans le code XHTML via la balise <img />
, mais avec les images PNG de fond transparentes en CSS, qu’en est-il ?
L’excellent site A List Apart nous présente la méthode propre et efficace d’Oak Sanderson dans l’article que je vous conseille Cross-Browser Variable Opacity with PNG: A Real Solution
de Michael Lovitt. Cette méthode permet de simuler aussi la transparence alpha des PNG sur les images de fond, comme on peut le voir dans l’exemple de <div>
translucide.
Méthode efficace, mais peu pratique et flexible. En effet, il est nécessaire de déterminer chaque image de fond en JavaScript. Or, si le JavaScript est désactivé sur votre navigateur pour une raison quelconque, vous n’aurez pas d’image du tout ! Problème.
Une solution complète ?
Fort de ses diverses solutions, j’ai cherché s’il y exitait une solution complète capable de combiner toutes ces solutions de manière intelligente et bien pensée. Aucun résultat.
Etant donné que l’on n’est jamais mieux servi que par soi-même. J’ai adapté chacune de ses solutions à mon gré pour n’avoir qu’un seul fichier JavaScript gérant toutes les possibilités.
Ma solution est donc concentrée dans un fichier Javascript qui automatisera ces tâches au chargement de la page.
Télécharger le fichier Javascript
- Configurez le fichier dans les premières lignes de code.
- Placez le fichier ci-dessous sur votre serveur.
- Placez un appel de ce fichier entre les balises
<head>
du type :
<script type="text/javascript" src="/wp-content/images/developpement-web/png-transparent-background-css-hack-internet-explorer/pngfixall.js"></script>
. - Choisissez au mieux vos couleurs de remplacement de transparence d’Internet Explorer via TweakPNG.
Cette méthode comporte maleureusement quelques désagréements notables :
- Mauvaise prise en compte des liens
- Défilement vertical saccadé
- Un blocage au chargement de la page car le script parcourt la page HTML ainsi que les feuilles de style CSS associées
- Une non prise en compte des backgrounds répétés en mosaïque
Un bilan mitigé en attendant Internet Explorer 7
Toujours est-il que, sans vouloir faire de l’anti-Billou, Internet Explorer freine le développement des PNG du fait de sa notoriété. Ce qui rassure, c’est que la prochaine version n°7 comprendra correctement la transparence des PNG comme on peut l’espérer dans l’article IE7 Transparent PNG Implementation
d’IEBlog.
Ceci dit, il faudra tout de même attendre quelques années avant que les versions 6 et inférieures d’Internet Explorer ne disparaissent de la toile…
Ce que nos lecteurs en disent :
Ben
Athéna
an.archi
Toz'Man
elentarion
tigrou
Dragon83
Philippe
dlabaaalle
dlabaaalle
dlabaaalle
Bonzelfe
Adysone
Réalisation sites internet
galima
Joel
Joss850csi
GrosBedo
atazia
valerian
Cyril
cyril
Les commentaires sont clos.