Accueil > weblog
- Lire le billet précédent - Lire le billet suivant -
Par Laurent Denis, le 03 septembre 2004.
Normalement, en CSS, quelques-soient les règles spécifiées, c'est la dernière qui l'importe sur les précédentes. Cependant, si vous utilisez
!importantaprès une commande, alors celle-ci aura la préséance, quelque-soit ce qui la suit. Ceci est vrai pour tous les navigateurs à l'exception d'IE. Un exemple :margin-top: 3.5em !important; margin-top: 2em;Dans ce cas, le
margin topsera de 3.5em pour tous les navigateurs sauf pour IE, qui aura unmargin topde 2em [...]
1. Le 08 septembre 2004 à 11:11, de Ma poubelle à idée...
Les 10 astuces CSS font parler d'elles...
L'article Ten CSS tricks you may not know a fait le tour de la blogosphère, et l'on peut remercier blog-and-blues pour la traduction d'une de ses astuces. Il semble cependant que certaines voix s'élèvent pour dénoncer un manque de rigueur...
Les trackbacks pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.
Commentaires
Laurent Denis, le 03 septembre 2004
De quoi envoyer au panier quelques-uns des hacks CSS les plus infâmes...
Talou, le 03 septembre 2004
Tout à fait, c'est vraiment le plus simple et le plus fréquent hack à utiliser ! Un pur réflexe quoi.
[ NikO ], le 03 septembre 2004
J'avais une préference pour
#monid {}
html>body #monid {}
Mais c'est vrai que cette methode est toute de même moins lourde ...
stombi, le 03 septembre 2004
Perso j'ai une préférence pour pas de hack du tout et utiliser IE7
dean.edwards.name/IE7/
Igrecpoint, le 03 septembre 2004
en perso,; j'essaie de ne pas 'hacker' pour ie (non mais, faut pas abuser quand même izonka avoir firefox comme tout le monde !
mais au taff, comme Niko, j'ai une préférence pour le hack d'héritage
toto tata {/*all*/}
toto>tata {/*all real browser*/}
mais celui la est pas mal non plus, vais p'têt changer tout ça ;o))
merci
Laurent Denis, le 03 septembre 2004
Pas de hack du tout... C'est encore le mieux, évidemment.
Mais ensuite, il faut distinguer, AMHA, entre :
- les "hacks" qui n'en sont pas vraiment, car ils recourent simplement à une syntaxe parfaitement normale, simplement dédoublée comme celui-ci et celui du sélecteur d'enfant (html>body).
- les hacks CSS purs et durs type Tantek Celik, avec syntaxe détournée de son usage, ou syntaxe aberrante.
- les hacks "lourds" avec javascript, **à commencer par IE7**, qui représentent un degré de plus, parce qu'ils entraînent une surcouche supplémentaire de traitement (HTML + CSS + javascript requis).
Kevin, le 03 septembre 2004
Oui, et faut surtout voir si IE7 fonctionne partout, pour toutes les bugs qu'il prétend résoudre, parce qu'il y'a des différences selon l'hébergement ( en local, impossible de le faire tourner, sur un hébergement pro non plus , puis sur Free ca marchait :| ) .
Et même sur Free donc, tout n'était pas pris en compte et rectifié, alors que la page de test indiqué que tout les bugs devaient disparaitre ....
De plus, IE7, de par l'utilisation du Javascript, ralentit énormément les pages !
Eric Daspet, le 05 septembre 2004
Le !important est contestable. Il a un effet secondaire très important : il risque de passer par dessus une règle de la CSS utilisateur (qui elle n'a probablement pas le !important).
Pour moi c'est un détournement de sens similaire à ce qu'on peut trouver sur HTML quand on utilise <blockquote> pour faire une indentation. Cette possibilité est là pour une propriété qui est importante et qui ne doit surtout pas être modifiée. Là tu l'utilises pour un effet de bord, en oubliant les autres effets.
À défaut d'avoir une solution parfaite, j'avoue que IE7 me semble beaucoup plus la solution à adopter (ça ne gêne personne d'autre que MSIE et il y a relativement peu d'effet secondaires). Certes ça impose javascript mais il faut bien voir qu'il s'agit déjà là de palier les déficiences d'un navigateur. Dire "Si votre navigateur est mauvais, il vous faudra activer javascript" ne me gêne pas beaucoup.
Ce qui serait bien c'est quelque chose d'un peu modulaire pour IE7, histoire de ne charger que les modules nécessaires et alléger un peu le tout.
Laurent Denis, le 05 septembre 2004
Eric, ce que tu dis reviendrait à proscrire totalement le !important des styles auteurs. Mais :

- sur le principe, rien n'interdit d'utiliser par ailleurs le !important dans une feuille de style pour d'autre raisons... Sachant qu'un !important dans la feuille de style utilisateur l'emportera finalement. Et qu'une CSS utilisateur "prudente" (voir celles par défaut d'Opera) utilise justement systématiquement le !important.
- en pratique, quelles sont les chances d'appliquer le !important (en tant que hack cette fois) à une propriété CSS que l'utilisateur est susceptible de modifier ? Il s'agit principalement de gérer des dimensions de boîtes, non des tailles de caractères, des couleurs, etc
Laurent Denis, le 05 septembre 2004
J'oubliais : IE7 existe effectivement en version "modulaire", chez l'un des émules (hongrois) de Dean Edwards (Je n'ai plus la référence sous la main).
Eric Daspet, le 05 septembre 2004
Laurent, je ne préconise pas d'exclure les !important, mais simplement ... des les réserver pour ce qui est justement important
Pour le IE7 modulaire je ne savais pas, je vais fouiller.
tehu, le 08 septembre 2004
Tantek n'est pas d'accord. Il y a confusion.
tantek.com/log/2004/09.ht...
Laurent Denis, le 08 septembre 2004
Sur ce point précis, l'article de T. Celik semble avant tout reprocher à Trenton Moss d'avoir osé ne pas distinguer IE Windows et IE5 Mac (dont Celik est un des auteurs).

Le second point ("Second the problem actually has nothing to do with !important, but with the processing of multiple declarations of the same propertry in the same style rule.")... à vérifier, n'ôte rien à l'efficacité du hack
Laurent Denis, le 08 septembre 2004
Vérification faite :
P {color: green ! important;} P {color: red;}P { color: green ! important; color: red; }Autrement dit, le bug d'IE porte sur le non-respect de
!importanten cas de déclarations répétées de la même propriété dans un sélecteur unique. Le hack reste tout à fait valable.En fait, ce serait un substitut possible... au Tantek Celik hack
Les commentaires pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.