Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1172 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Résolu] Sélectionner une classe CSS selon le navigateur ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Sélectionner une classe CSS selon le navigateur ?

n°2067229
LightBen
Posté le 31-03-2011 à 10:20:14  profilanswer
 

Bonjour,
 
Je sais qu'il est possible via ce qu'on appelle apparemment un hack CSS de sélectionner une feuille de style CSS spécifique selon le navigateur.
Ce que je voudrais savoir, c'est est-ce qu'il est possible de sélectionner un élément particulier d'une CSS selon le navigateur ?
 
Exemple :  
 

Code :
  1. [Si IE alors]
  2. .class1 {...}
  3. [sinon]
  4. .class2 {...}


 
Ma question concerne class, id ou autre
 
Le mieux serait de toucher à la CSS vu qu'elle est incluse partout.
Au pire, ce serait dans le HTML ou alors via un script JS ou PHP ?
 
exemple :
 

Code :
  1. <p [si IE alors] class="class1" [sinon] class="class2">element</p>


 
Voilà... merci =)


Message édité par LightBen le 31-03-2011 à 16:38:59
mood
Publicité
Posté le 31-03-2011 à 10:20:14  profilanswer
 

n°2067234
Antoine T
Posté le 31-03-2011 à 10:37:15  profilanswer
 

Bonjour, de ce que je connais des hacks CSS, c'est su style :
 

Code :
  1. <head>
  2. <!--[if IE]>
  3. .taclass{
  4. }
  5. <![endif]-->
  6. <!--[if !IE]>
  7. .taclass{
  8. }
  9. <![endif]-->
  10. </head>


 
Tu peux ensuite spécifier quelle version d'IE, (ie : gt6 pour "greater than version 6" ) etc...
A confirmer


Message édité par Antoine T le 31-03-2011 à 10:37:54
n°2067235
LightBen
Posté le 31-03-2011 à 10:39:06  profilanswer
 

OK je vais continuer à chercher, si quelqu'un trouve, il peut mettre sa réponse, si je trouve je la mettrai =)

n°2067237
LightBen
Posté le 31-03-2011 à 10:39:27  profilanswer
 

Oups, je suis tellement pressé j'ai dit "OK" mais pas "merci" ^^

n°2067258
LightBen
Posté le 31-03-2011 à 11:46:32  profilanswer
 

Pour le moment j'ai trouvé une fonction php :
 

Code :
  1. <?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) echo "<div style=\"margin-top:21px;\">"?>


 
Mais si j'utilise ça, je vais devoir le faire partout...
 
Est-ce qu'il y aurait un meilleur moyen ?
 
Merci =)
 
NB : le top aurait été ce genre d'algorithme dans la CSS :
 

Code :
  1. si IE alors utiliser la classe1 sinon utiliser la classe2


n°2067280
Antoine T
Posté le 31-03-2011 à 14:03:52  profilanswer
 

Le code que je t'ai donné est un début de piste justement. C'est de mémoire, mais vérifie sur Google.
 
Dans le head de ta page, tu places ce code. La balise <!--[if IE]> détecte si le navigateur est IE, et exécute le code jusqu'à la balise <![endif]-->. L'autre balise <!--[if !IE] (avec le point d'exclamation) détecte tous les navigateurs non-IE. Le code à placer est donc ta class CSS (ou div, id, etc...) pour les navigateurs non-IE.

n°2067288
LightBen
Posté le 31-03-2011 à 14:28:46  profilanswer
 

Alors, il faut que je fasse un récapitulatif pour bien cerner les choses :
 
J'ai un fichier index.php avec mon code, et un fichier style.css qui lui applique toute la charte graphique.
 
Dans index.php j'ai :
 

Code :
  1. <div class="class1">contenu</div>


 
Mais sous IE ça marche mal donc je voudrais à la place :
 

Code :
  1. <div class="class2">contenu</div>


 
Donc pour cela il faudrait remplacer la class1 par class2 pour IE.
 
Tu me dis :
Dans le head de index.php je mettrais
 

Code :
  1. <!--[if !IE]>
  2. .class1{
  3. }
  4. <![endif]-->
  5. <!--[if IE]>
  6. .class2{
  7. }
  8. <![endif]-->


 
Mes questions :
 
1) Je peux mettre ça dans la CSS au lieu de le mettre dans le head ?
2) Sinon, je dois le mettre entre les balises style du head je suppose ?
3) Au niveau du code, comment je fais ? (la div où la classe doit être appliquée)
 
Merci =)

n°2067291
Antoine T
Posté le 31-03-2011 à 14:43:52  profilanswer
 

Voici un code qui doit marcher (toujours de mémoire, à adapter, ou reprendre). Je ne suis pas un pro du CSS ^^
 
Fichier index.php :

Code :
  1. <html>
  2. <head>
  3. <!--[if !IE]>
  4. div.class{
  5. color : red;
  6. }
  7. <![endif]-->
  8. <!--[if IE]>
  9. div.class{
  10. color : blue;
  11. }
  12. <![endif]-->
  13. </head>
  14. <body>
  15. <div class="class">
  16. Texte en rouge si Firefox, en bleu si IE
  17. </div>
  18. </body
  19. </html>


 
Essaye ceci :)


Message édité par Antoine T le 31-03-2011 à 14:44:15
n°2067304
LightBen
Posté le 31-03-2011 à 15:30:44  profilanswer
 

Enfin, j'ai réussi ^^ Merci beaucoup Antoine =)
 
Donc dans mon cas, la condition "if IE" marche, mais "if !IE" ne marche pas. Du coup, j'ai mis le code normal dans le fichier css, et j'ai mis le code pour IE dans le head, car ce code est prioritaire au code CSS.
 
Ma solution personnelle :
 
index.php :
 

Code :
  1. <head>
  2. <!--[if IE]>
  3. <style type="text/css">
  4. class1 {
  5.   border:0px;
  6. }
  7. </style>
  8. </head
  9. <![endif]-->
  10. <body>
  11.   <div class="class1">contenu</div>
  12. </body>


 
style.css :

Code :
  1. class1 {
  2.   border:12px;
  3. }


 
Je sens que je vais m'amuser moi ^^ avec IE9 le décalage d'interprétation est pire :/


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Résolu] Sélectionner une classe CSS selon le navigateur ?

 

Sujets relatifs
Méthode n'appartenant qu'à une classe fille - dynamic_cast[CSS] Problème d'affichage!
[HTML/CSS/Javascript/(php ?)] Widget sidebarStyle CSS de ma balise body non reconnu
[Java/JEE] [Résolu] Comportement Calendar selon Localemacro TCD: impossible lire propriété PivotTable de la classe WorkSheet
structure Vs classeclasse python
CSS: border-right-width-ltr-source: physical; c'est quoi?! [résolu][C++] tableau de classe dans une autre classe ?
Plus de sujets relatifs à : [Résolu] Sélectionner une classe CSS selon le navigateur ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR