Tous les articles

Et alors, ce Reset CSS, on l’utilise ?

Par Pierre Bertet

Eric Meyer a récemment publié une nouvelle version de son fameux Reset CSS. Il s’agit de quelques lignes de code CSS ayant pour but de remettre « à zéro » les styles par défaut appliqués par les navigateurs.

Il va cibler les éléments un par un, plutôt que d’utiliser le sélecteur universel (non, rien à voir avec quelque puissance divine) pour diverses raisons :

  • Il ne faut pas styler les intouchables : Boutons radio, Cases à cocher et leurs amis peuvent se montrer très capricieux…
  • Certaines propriétés sont spécifiques à un élément. Quelle doit être la réaction d’un navigateur lorsqu’une propriété CSS ne correspond pas à l’élément ciblé ?

Corinne Schillinger a publié sur le blog d’alsacreations un billet dans lequel se pose la question suivante :

Est-ce une bonne chose de remettre à 0 certains styles par défaut ?

Le principal argument en défaveur du reset est l’oubli dans notre CSS de styler certains éléments.

Ma réponse sera précise, tranchée et définitive : mmm… ça dépend.

Prenons la feuille de style par défaut recommandée par la spécification CSS2.

Cette CSS a été établie dans une « logique XML », c’est à dire de séparation stricte entre le contenu et la mise en forme. Pour prendre un exemple, elle part du principe que <head> est un élément du document, et lui applique une propriété display:none.

Comme précisé en haut de ce document, il est uniquement publié à titre informatif, et ne fait pas partie de la norme : chaque navigateur est libre d’appliquer ses propres styles par défaut : on pourrait par exemple imaginer un navigateur qui appliquerait une couleur pour chaque titre, suivant son importance.

Je pense que le problème est là : et si les navigateurs n’appliquaient les styles par défaut qu’en l’absence de CSS ?

Difficilement concevable en l’état actuel des choses :

  • 99% des auteurs ajouteraient cet énorme bloc dans leurs CSS.
  • La plupart des éléments ont été conçus par rapport à leur display par défaut, comme l’élément table et ses enfants, et il est rarement modifié.
  • Comment réaliser l’élément <legend> d’un <fieldset> en CSS (Non ce n’est pas un défi, lâchez cet éditeur et je vous promets qu’il ne vous arrivera rien) ?

Néanmoins, je pense que le concept est intéressant : pourquoi devrait-on s’appuyer sur une CSS imprévisible pour construire la nôtre ?

Dans le monde réel, la réponse est simple : nous savons que les navigateurs, à quelques différences près, appliquent les mêmes styles par défaut.

Il faut je pense, se reposer sur le plus évident en supprimant les différences : la propriété display de chaque élément est définie dans la DTD HTML4, par exemple. Chaque navigateur l’interprète de la même façon et il est inutile de la redéfinir. Tant que nous n’avons pas vu de navigateur aux titres multicolores, nous pouvons encore compter sur l’héritage de body pour définir un color:#000 sur tous les textes.

La solution d’Eric Meyer est un très bon compromis pour le moment, en attendant de trouver une solution idéale (…ce qui risque de prendre un moment), et à condition d’adhérer au principe de séparation stricte contenu / mise en forme.

Et le risque d’oublier le style d’un élément ?

En appliquant une CSS à une page, on assume le fait de ne pas respecter le style par défaut du navigateur en proposant à l’utilisateur une nouvelle présentation. Je pense qu’il faut alors aller jusqu’au bout en prenant en charge le style de tous les éléments.

On peut oublier de styler certains éléments, mais on ne devrait pas.

On peut oublier son anniversaire de mariage, mais on ne devrait pas.

Article rédigé par , publié le dans la catégorie Front-end. Vous pouvez suivre les commentaires de cet article en utilisant le flux RSS dédié. Les commentaires sont fermés sur cet article.

Tags : ,

4 commentaires

Flux RSS des commentaires de cet article

‘la propriété display de chaque élément est définie dans la DTD HTML4’
Certes, mais il s’agit là uniquement de la théorie, en réalité les navigateurs n’ont pas implémenté tous les display définis par le W3C. L’exemple le plus connu est certainement les tableaux sur *

Le 12 Jan. 2008 à 13h17 par Yves

IE inférieure et égal à 7 et inline-block sur les versions inférieures à Gecko 1.9
(PS : petit bug dans les commentaires sur le caractère ‘inférieure à’)

Le 12 Jan. 2008 à 13h19 par Yves

Les commentaires sont fermés sur cet article.