Resulta habitual encontrarse con que las distintas versiones de Internet Explorer interpretan de forma distinta ciertas propiedades CSS, y que sea necesario utilizar engorrosos selectores para filtrar las versiones que dan problemas, vincular hojas de estilo mediante comentarios condicionales, Javascript, etc.
¿Y por qué no utilizar clases individualizadas para cada navegador?
Se puede hacer de dos modos:
- Detectando el navegador mediante servidor.
- Utilizando diferentes elementos HTML diferenciados en las clases que contienen.
La primera alternativa tiene la ventaja de que podremos detectar navegador, versión y sistema operativo. Y la desventaja: no siempre identificará adecuadamente el navegador; y es necesario que la página esté en un servidor y que sea generada mediante PHP, ASP o lenguajes del lado del servidor.
La otra alternativa sólo servirá para filtrar las versiones de Internet Explorer, pero sin los inconvenientes de la detección por servidor. Además, habitualmente no será necesario mucho más que éste filtrado.
Se puede hacer del siguiente modo:
<!--[if lt IE 7 ]><html lang="es" class="ie6 ielt7 ielt8 ielt9"> <![endif]-->
<!--[if IE 7 ]><html lang="es" class="ie7 ielt8 ielt9"> <![endif]-->
<!--[if IE 8 ]><html lang="es" class="ie8 ielt9"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="es"><!--<![endif]-->
Así cada versión de Internet Explorer adopta clases distintas en el elemento HTML que permitan distinguirlas en la CSS.