Origine des hacks de parsing
Dans les premières versions d’Internet Explorer (IE6 et antérieures), le moteur de rendu accepte des préfixes de propriété non standards. Ainsi,
width: 300px;
*width: 250px;
_width: 200px;
-width: 200px;est interprété, le « star hack » (*) étant reconnu uniquement par IE7 et moins, tandis que le préfixe souligné (_) ou le tiret (-) ne fonctionnent que sous IE6. Cette différence provient d’un analyseur CSS permissif qui ne suit pas strictement la spécification W3C. Les développeurs ont exploité ces incohérences pour appliquer des valeurs alternatives selon le navigateur, contournant l’absence de commentaires conditionnels dans les feuilles de style.Mécanismes de mise en page spécifiques à IE
IE jusqu’à la version 8 possède un flag interne nommé hasLayout. Un élément qui n’a pas ce flag subit des comportements de marge, de bordure et de flottement imprévisibles, entraînant l’effondrement du conteneur parent. La règle
.clearfix {
zoom: 1;
}force le flag en assignant zoom: 1, qui ne modifie pas la taille visuelle mais active le layout. De même, le curseur « hand » était la seule valeur reconnue avant IE6, d’où la double déclaration cursor: pointer;
cursor: hand;pour garantir la compatibilité entre les navigateurs.Expressions CSS et filtres propriétaires
IE5 a introduit les CSS Expressions, permettant d’exécuter du JavaScript dans une déclaration CSS, par exemple
top: expression(eval(document.documentElement.scrollTop));. Cette technique comblait l’absence de position: fixed et de propriétés de largeur minimale, mais elle était évaluée à chaque événement de rendu, de redimensionnement, de défilement ou de mouvement de souris, ce qui alourdit considérablement le temps de calcul. Microsoft a retiré ce mécanisme avec IE8. Parallèlement, les filters DirectX offraient des effets visuels non standard : filter: alpha(opacity=50); pour la transparence, puis filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50); dans IE5.5. Le préfixe propriétaire a été ajouté en IE8 (-ms-filter) afin de se rapprocher du format CSS, mais les filtres restent dépendants de l’infrastructure Windows et désactivent ClearType, ce qui dégrade la lisibilité du texte.Conséquences et fin de prise en charge
Ces hacks ont permis aux développeurs de livrer des sites fonctionnels malgré une fragmentation importante du marché. Cependant, chaque technique introduit une complexité de maintenance et un risque de régression lors de la mise à jour du moteur. La disparition progressive d’IE (fin du support en 2022) a rendu obsolètes la plupart de ces solutions. Les navigateurs modernes respectent strictement la syntaxe CSS, rendant les préfixes « * », « _ » ou les filtres DirectX inutiles et souvent bloqués par les outils de validation. La transition vers les standards CSS3 et les préprocesseurs (Sass, PostCSS) offre aujourd’hui des alternatives plus sûres et maintenables.