XHTML & CSS

5 astuces pour améliorer la compatibilité CSS de Internet Explorer

Le 31 janvier 2008 à 21:50 par chris

le cauchemar de tout intégrateur Web, c’est bien ce fichu internet Explorer qui ne comprend rien à rien aux CSS. Pire avec l’arrivée de IE7, on se retrouve avec 2 navigateurs traduisant votre mise en forme à leur façon.

Voici 5 astuces qui vous permettront d’améliorer la compatibilité navigateur de vos mises en forme:

1. Réinitialiser les css:
Une astuce bien pratique, c’est prédéfinir la façon dont les tous navigateurs traduiront vos style grâce à une feuille de style de base.

  1.  
  2. html, body, div, span, applet, object, iframe,
  3. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  4. a, abbr, acronym, address, big, cite, code,
  5. del, dfn, em, font, img, ins, kbd, q, s, samp,
  6. small, strike, strong, sub, sup, tt, var,
  7. b, u, i, center,
  8. dl, dt, dd, ol, ul, li,
  9. fieldset, form, label, legend,
  10. table, caption, tbody, tfoot, thead, tr, th, td {
  11.         margin: 0;
  12.         padding: 0;
  13.         border: 0;
  14.         outline: 0;
  15.         font-size: 100%;
  16.         vertical-align: baseline;
  17.         background: transparent;
  18. }
  19. body {
  20.         line-height: 1;
  21. }
  22. ol, ul {
  23.         list-style: none;
  24. }
  25. blockquote, q {
  26.         quotes: none;
  27. }
  28.  
  29. /* remember to define focus styles! */
  30. :focus {
  31.         outline: 0;
  32. }
  33.  
  34. /* remember to highlight inserts somehow! */
  35. ins {
  36.         text-decoration: none;
  37. }
  38. del {
  39.         text-decoration: line-through;
  40. }
  41.  
  42. /* tables still need ‘cellspacing="0"’ in the markup */
  43. table {
  44.         border-collapse: collapse;
  45.         border-spacing: 0;
  46. }
  47.  

2. Ajouter le support du png à Internet Explorer 6,
pour cela vous pouvez ajouter ce script htc et l’insérer comme ceci:

  1.  
  2. img, h1, .class-with-png-background-image {
  3.     behavior: url(../htc/iepngfix.htc);
  4. }
  5.  

3. Le CrossHover:
IE ne supporte pas les évènement “hover” sur des éléments autres que les liens. Vous pouvez aussi corriger ceci avec le script crosshover htc et l’insérer comme ceci:

  1.  
  2. body { behavior:url("../htc/csshover.htc"); }
  3.  

4. Donner de la mise en page à vos éléments
Le bug le plus courant d’IE est sa gestion du “layout”. En effet, il a toujours besoins de générer un “bloc” autour de l’élément, ce qui peut être très génant lors des mise en colonne. Voici la liste des propriétés CSS qui annulent le layout.

  1.  
  2. position: absolute [IE 6 & 7]
  3. float: left [IE 6 & 7]
  4. float: right [IE 6 & 7]
  5. display: inline-table [IE 6 & 7]
  6. any width or height value [IE 6 & 7]
  7. zoom [IE 6 & 7]
  8. min-width [IE 7]
  9. max-width [IE 7]
  10. min-height [IE 7]
  11. max-height [IE 7]
  12. overflow [IE 7]
  13.  

5. Éliminez le bug de la “double marge”
IE 6 a tendance à doubler les marges de chaque élément qui a été assigné au flot et marge de gauche / droite marge.
Pour surmonter ce problème, il suffit de fixer display: inline sur l’élément incriminé.

  1.  
  2. display: inline;
  3.  

14 commentaires »

Gravatar

Commentaire de Tom Clarks

le 31 janvier 2008 à 22:36

Sympa comme article, vraiment utile, surtout le coup du CrossHover, je savais pas qu’il existait une solution (je n’avais pas vraiment cherché en fait, j’avoue) :)
Merci Chris ;)

Gravatar

Commentaire de Rémi Toffoli

le 31 janvier 2008 à 22:46

Salut,

Je tiens juste à te préciser pour ton premier exemple qu’une simple “*” suffit à appliquer un style à toute les balises :
* {
margin: 0;
pad…

:)

Gravatar

Commentaire de DuMe

le 31 janvier 2008 à 22:56

Moi plutôt que de tout nommé, je fais :
*{
margin : 0;
padding : 0;
}

Gravatar

Commentaire de Flepi

le 31 janvier 2008 à 23:13

Très bon les scripts .htc, merci beaucoup !

Gravatar

Commentaire de chris

le 31 janvier 2008 à 23:18

j’ai eu une mauvaise blague une fois avec le * donc, je laisse ça aux autres. Mais dans 99,9 % des cas, vous avez raisons!

Gravatar

Commentaire de chris

le 31 janvier 2008 à 23:21

Tiens Flepi, c’est drôle je viens juste de découvrir ton blog tout à l’heure avec le lémurien

Gravatar

Commentaire de PtitOurs

le 1 février 2008 à 1:10

Excellent, je teste ça prochainement. Cela fait longtemps que je souhaitais pouvoir harmoniser un peu plus IE.

Gravatar

Commentaire de Darklg

le 1 février 2008 à 1:18

Terrible les fichiers htc :D
Sinon, pour le “reset css”, le bout de code vient de chez Eric Meyer, qui l’améliore de temps à autre ;)
http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/

Gravatar

Pingback de CSS, les astuces que je n'ai pas trouvées tout seul | Pochade

le 1 février 2008 à 10:01

[…] 5 astuces pour améliorer la compatibilité CSS de Internet Explorer […]

Gravatar

Commentaire de chris

le 1 février 2008 à 10:15

@Darklg: Yep mais tu peu trouver d’autres Reset CSS sur d’autres sites, Yahoo par exemple. Celui-ci me semble le plus intéressant.

Gravatar

Commentaire de Spylberg

le 1 février 2008 à 10:48

Excellent !
Surtout le fix pour les background en png, ça m’a bien servi tiens !

Gravatar

Commentaire de artxtra

le 1 février 2008 à 10:50

Le CSS Reset vient effectivement de chez Eric Meyer. Bruno de chez css4design avait fait un article dessus, en comparant avec d’autres reset, dont celui de Yahoo.
Sinon il existe aussi le script ie7.js de Dean Edwards qui reprend tous les htc (pas W3C compliant) et autres astuces mentionnées plus haut…

Gravatar

Commentaire de Oui mais ?

le 1 février 2008 à 13:47

Sympatique ces fichiers htc! Après avoir fourré mon nez dans ces fichiers, il semblerait que ce soit en fait du javasript. Du coup ces fichiers htc sont-ils tout de même interprétés lorsque le javascript est désactivé ? Quelqu’un a essayé ?

Gravatar

Commentaire de Ben

le 22 avril 2008 à 23:53

Merci!

Laisser un commentaire

Votre Nom

Votre E-mail (obligatoire mais ne sera pas publié)

Votre Site ou blog

Votre commentaire

Valid XHTML 1.0 Transitional