Deux feuilles de style pour 2 version d'IE

WRInaute impliqué
Bonjour a tous

Je viens de m'appercevoir que site site a quelques bugs sous IE 7. Je vais donc devoir refaire un CSS pour lui. Jusque là pas trop compliquer je devrai m'en sortir.
La ou je bloque c'est au niveau de l'appel de fichier dans mon HTML. J'ai déjà un correctif pour Ie 6 et inferieur. Donc est il possible de faire 2 lignes comme ceci:
<!--[if lt IE 7.]><link rel="stylesheet" media="screen" type="text/css" href="/fichier_pour_ie6.css" /><![endif]-->
<!--[if IE]><link rel="stylesheet" media="screen" type="text/css" href="/fichier_pour_ie7.css" /><![endif]-->
 
WRInaute passionné
En fait c'est le plus souvent IE6 qui pose des problèmes de css, IE7 et FF les gère à peu près de la même façon.
Aussi il serait peut être plus judicieux de faire un condition PHP comme celle là :

If IE 6
=> feuille css IE6

else
=> feuille css générique

;)
 
WRInaute accro
<!--[if lt IE 7.]><link rel="stylesheet" media="screen" type="text/css" href="/fichier_pour_ie6.css" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" media="screen" type="text/css" href="/fichier_pour_ie7.css" /><![endif]-->
 
WRInaute discret
keroin a dit:
Aussi il serait peut être plus judicieux de faire un condition PHP comme celle là :

If IE 6
=> feuille css IE6

else
=> feuille css générique

Bof bof.

Passer par une condition PHP, c'est prendre le risque de récupérer une information erronée, le User Agent string n'étant pas normalisé et certains navigateurs mentant allègrement sur leur nature (pour se faire passer pour IE et éviter de se faire débouter par certains sites mal conçus). Il y a quelques années, c'était d'une fiabilité assez médiocre. Ça c'est peut-être amélioré depuis...

Ceci dit, on a un moyen tout à fait fiable d'adresser du code à certaines versions d'Internet Explorer Windows uniquement, et ce sont les commentaires conditionnels. Donc autant les utiliser.

Niveau bonne pratique, il s'agirait plutôt de faire ceci:
- feuille de style générique pour tous navigateurs (devrait assurer une compatibilité Firefox 1+, Opera 8+, Safari 2+ et IE 7+);
- une feuille de correctifs CSS appelée en plus pour IE 6 et inférieurs.
Suivant la complexité du design, il se peut qu'on soit également obligé d'adresser quelques correctifs à IE7.

Au final, ça peut donner ceci:
Code:
<link rel="stylesheet" media="screen" type="text/css" href="generique.css" />
<!--[if lte IE 6]><link rel="stylesheet" media="screen" type="text/css" href="correctifsie6.css" /><![endif]-->
<!-- Et si besoin... -->
<!--[if IE 7]><link rel="stylesheet" media="screen" type="text/css" href="correctifsie7.css" /><![endif]-->
Note 1: seul generique.css est une feuille de style complète. Les autres peuvent ne contenir que quelques rares lignes de code, voire aucune.
Note 2: à priori, pas de point après le 7 dans la condition [if lt IE 7].
 
WRInaute impliqué
Du coup j'ai un autre soucis avec IE7. Mon menu est en flash (oui, je sais pas bien etc.... mais la pas le temps de le refaire pour l'instant) et avec IE7, il faut cliquer une première fois sur le flash pour "l'activer" avant de pouvoir clicuer sur les boutons.
Ca passe nickel avec les autre navigateurs (même ie6). Ca vient de mon flash (une option a activer que j'ai loupé) ou alors il faut rajouter une ligne quelquepart dans le code source?
 
Discussions similaires
Haut