Page 1 sur 2

test conditionnel pour ie

Posté : 20 août 2008, 00:23
par x@v
Bonjour,

J'essaie de faire un test conditionnel

Code : Tout sélectionner

<!--[if IE]> <style type="text/css"> body {background-color:#000;} </style> <![endif]-->
Sa ne fonctionne pas ?

Merci

Posté : 20 août 2008, 01:24
par AB
Bonjour,

J'essaie de faire un test conditionnel

Code : Tout sélectionner

<!--[if IE]> <style type="text/css"> body {background-color:#000;} </style> <![endif]-->
Sa ne fonctionne pas ?

Merci
C'est quoi comme couleur #000 ?

Posté : 20 août 2008, 09:23
par jojolapine
#000 = #000000 = black
;)

Posté : 20 août 2008, 09:38
par Victor BRITO
Il n'y a aucune erreur. Ça devrait donc marcher.

Posté : 20 août 2008, 20:47
par Invité
Pourtant sur ce site
http://www.boutiknline.com/?page=proposition
sous ie 7 je n'ai pas de couleur noir en bas de page

Posté : 20 août 2008, 21:57
par AB
Tiens je savais même pas qu'on pouvait ne pas utiliser la valeur hexadécimale exacte :oops:

Sinon j'ai pas regardé ton code mais il y a fort à parier que tu as écrit ce commentaire en haut de page et qu'ensuite tu as écrit un background différent dans ta feuille de style (qu' IE n'a aucune raison d'ignorer). Auquel cas il suffit de mettre ce commentaire après ta feuille de style.

Posté : 20 août 2008, 22:38
par Hywan
Hey :),

Je ne vois pas d'erreur, donc je plussoie AB.

En ce qui concerne le #000000 qui devient #000, c'est simple. Si on travaille sur des couleurs en 255 bits (+ 1 bit alpha), on remarque que l'on écrit toujours en double. Par exemple : #ff0000, ou #336699, etc. Donc on peut facilement simplifier en ne mettant qu'un caractère sur 2. Ainsi #ff0000 devient #f00, et #336699 devient #369, etc.
Ça ne marche que pour les couleurs codées sur 255 bits, attention. Si on est sur 16 million de couleur, ça ne marchera jamais ;-).

Posté : 21 août 2008, 17:34
par x@v
donc ont doit poser le test conditionnel après le lien pour FF, safari...
comme cela ?

Code : Tout sélectionner

<link type="text/css" href="style.css" rel="stylesheet" media="screen, projection" /> <link type="text/css" href="accordeon.css" rel="stylesheet" media="screen, projection" /> <!--[if IE]> <style type="text/css"> body {background-color: #074570;} </style> <![endif]-->
Je ne savait pas que 3 chiffres équivalait à 256 couleurs, je ne sais pas d'où tu sors ça, mais c'est bon à savoir, et sa donne une explication plausible !

Posté : 21 août 2008, 17:36
par Hywan
255 pas 256 ;-).

Posté : 21 août 2008, 19:15
par Victor BRITO
donc ont doit poser le test conditionnel après le lien pour FF, safari...
comme cela ?

Code : Tout sélectionner

<link type="text/css" href="style.css" rel="stylesheet" media="screen, projection" /> <link type="text/css" href="accordeon.css" rel="stylesheet" media="screen, projection" /> <!--[if IE]> <style type="text/css"> body {background-color: #074570;} </style> <![endif]-->
Oui, puisque la feuille de style ciblant IE est censée apporter des correctifs, par effet d'écrasement des valeurs précédentes des mêmes propriétés appelées pour les mêmes sélecteurs appelés. Autrement dit, c'est le principe suivant :

Code : Tout sélectionner

body { background-color: white; background-color: black; /* l'arrière-plan sera de couleur noire */ }
Autre solution : si tu laisses ton commentaire conditionnel avant l'appel des autres feuilles de style, fais comme suit :

Code : Tout sélectionner

<!--[if IE]> <style type="text/css"> body {background-color: #074570 !important;} </style> <![endif]--> <link type="text/css" href="style.css" rel="stylesheet" media="screen, projection" /> <link type="text/css" href="accordeon.css" rel="stylesheet" media="screen, projection" />
La règle !important permet, en effet, d'éviter que la valeur de la propriété ne soit écrasée par une autre valeur issue d'une autre feuille de style appelant la même propriété dans le même sélecteur (sauf si cette dernière ou une feuille de style utilisateur emploie la règle !important). Autrement dit :

Code : Tout sélectionner

body { background-color: white !important; background-color: black; /* l'arrière-plan sera de couleur blanche */ }

Posté : 21 août 2008, 19:22
par Hywan
Attention ! La super-propriété !important n'est pas comprise par IE 6, il l'ignore totalement. C'est justement un de mes hacks favoris car propre.

Posté : 21 août 2008, 20:50
par Victor BRITO
Attention ! La super-propriété !important n'est pas comprise par IE 6, il l'ignore totalement. C'est justement un de mes hacks favoris car propre.
Figure-toi que, pas plus tard que cette semaine, j'ai utilisé cette règle dans le cadre d'une intégration et IE 6 la comprenait (certes, c'est une version standalone embarquée avec IETester ; mais, je m'attendais à ce que tu viens de dire).

Posté : 21 août 2008, 21:27
par x@v
d'ailleurs au début je voulais utiliser !important mais ie7 la comprend comme FF, donc c'était mort c'est bien dommage, même sir ie7 reste encourageant, je trouve que l'affichage des éléments (formulaire, bordure..) est moins jolis que chez ces concurents...

excellente explication du test conditionnel sa manquait...

Merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 22 août 2008, 02:34
par AB
Attention ! La super-propriété !important n'est pas comprise par IE 6, il l'ignore totalement. C'est justement un de mes hacks favoris car propre.
J'ai pas le temps de faire des tests approfondis mais

Code : Tout sélectionner

<!--[if IE]> <style type="text/css"> body {background-color: #074570 !important;} </style> <![endif]-->
est bien pris en compte par IE6.

Je le confirme pour info car je teste sur la version standard 6.0.2900.5512.xpsp.080413-2111 (donc pas une version standalone) sous XP SP3.

Posté : 22 août 2008, 03:43
par x@v
j'ai pourtant tester et j'affirme que ie6 ne voit pas les propriétés qui précèdent
!important
Sa fonctionnait pour ie7 comme ceci
!important!
Mais pas régulièrement...

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]