Quand on débute dans la publication sur Internet, on n'a strictement rien à cirer des standards. C'est trop limitatif dans le processus de découverte d'une technologie. Mais quand on maîtrise déjà un peu plus la dite technologie, on commence à s'intéresser aux standards, et là, ça fait mal. Pour le CSS par exemple, les recommandations du W3C sont plutôt explicite. Pourtant, les géants du logiciel ont tout intérêt (enfin, le croient-ils) de tirer les standards à eux.
Du coup, quand on écrit un code simple, il n'a pas forcément la même signification partout (sans compter les problèmes dus aux bugs des moteurs CSS des navigateurs).
L'exemple du CSS est très révélateur: si l'on prend la petite dizaine de navigateurs les plus présents sur le marché, que l'on décline les différentes versions de chacun et que l'on multiplie par le nombre d'OS sur lesquels ils ont été portés, on comprend vite l'ampleur du problème.
Alors il faut rafisteler afin d'adapter son CSS aux principaux navigateurs et tenter d'obtenir un affichage identique sur un maximum de navigateurs.
Voici donc un échantillon de quelques méthodes d'adaptation dans le CSS ou selecteur désigne un sélecteur par balise (ex: a), par identifiant (ex: #main) ou par classe (ex: .box):
Hack
Explications
Navigateurs
* html selecteur {color:#c00; }
Le meta-sélecteur * est interprété comme un parent (fictif) de html par IE qui sera le seul à reconnaitre cette règle.
Internet Explorer (PC et Mac)
selecteur {color:#c00;}
/* Masque la ligne suivant pour IE Mac \*/
selecteur {color:#00c;}
/* IE5 Mac croit que la ligne précédente est dans le commentaire */
IE Mac considère * comme un caractère d'échappement et ignorera la seconde ligne.
Internet Explorer Mac
selecteur/* */ {color:#c00;}
IE ignore la déclaration s'il n'y a pas d'espace entre le sélecteur et le commentaire
IE4.0 Mac, IE5
body > selecteur {color:#c00}
La déclaration est ignorée pour ces navigateurs
IE4 Mac, IE6- Win, Amaya5.1, Netscape4
/*/*/
selecteur {color:#c00;}
/* */
Ignoré par Netscape 4
NetScape 4
@media all and (min-width:0px){
selecteur {color:#c00;}
}
Opera est le seul navigateur à utiliser ce CSS conditionnel
Opera 7
selecteur {
color:#c00;
* color:#0c0;
}
Sous IE le texte sera vert.
IE5+ Win et IE5.2 OS9
selecteur {
color:#c00;
color: /**/#0c0;
}
Sous IE5.5 Win le texte sera vert
IE5.5 Win
selecteur {
color:#c00;
color: expression('0c0');
}
Sous IE5.5 Win le texte sera vert
IE 5.0+ Win
selecteur {
color: #c00 !important;
color:#0c0;
}
IE ne prend pas en compte le marqueur important et prend la couleur de la seconde définition
IE
selecteur{
_color:#0c0;
}
Le texte sera vert sous IE seulement
IE Win / MacOS9
*>html selecteur{
color:#c00;}
Seul IE7 reconnait ce selecteur
IE7
Notez que Microsoft conseille de ne plus utiliser les hacks CSS car ils ne devraient plus fonctionner avec IE7 qui devrait respecter les standards (j'en ris encore).
Voici une petite comptine première et, qui plus est, mathématiquement correcte.
Deux, trois, cinq, sept,
Nous irons à Sète
Onze, treize, dix-sept,
Pêcher des crevettes
Dix-neuf, vin't-trois, vin't-neuf,
Dans mon panier neuf
Trente-et-un, trente-sept
Elles seront toutes vertes !
Ca faisait bien longtemps que je n'avais pas publié d'article. Trop longtemps. Mais comme l'écran (total) du PC ne fait pas bronzer, j'avais entrepris de prendre l'air. Le temps de faire un peu de tri et je vous proposerai d'autres photos.