Las
guerras entre navegadores fueron cruentas en su día y sólo han dejado vencidos a su paso: los pobres desarrolladores web que tienen que usar todo su ingenio para conseguir que una página se vea igual en todos los navegadores (actuales, antiguos y futuros).
Afortunadamente, el futuro pinta bastante bien en este aspecto. Los nuevos clientes web que salen al mercado (Firefox, Opera, Safari, Konqueror, etc...) tienen entre sus objetivos seguir y cumplir los estándares que se discuten y aprueban en el
W3C.
Pero, ¿qué hacer con los navegadores que a día de hoy se usan aunque sean auténticas reliquias del pasado? Existen varias opciones:
- Hacer varias hojas de estilos, cada una para cada navegador.
- Hacer una única hoja de estilos, mezclando código válido (que es lo que el W3C recomienda) con selectores específicos que sacan partido de los errores de interpretación de las CSS de cada navegador.
- Como variación de la primera opción (varias CSS), podemos hacer una CSS general para todos, y alguna más específica para aquellos navegadores en los que haya algún problemilla que resolver.
La primera opción requiere de 2 cosas: tener una manera de poder identificar a cada uno de los navegadores (a través de un lenguaje de programación del lado del servidor como
PHP, por ejemplo), y mucho trabajo por nuestra parte, ya que deberemos repetir muchísimo código en cada una de las hojas de estilos. El trabajo de hacer CSS, en principio, dependerá de nuestra paciencia, pero identificar navegadores web no es una tarea fácil y no siempre será posible llevarlo a cabo (si sólo disponemos de
HTML para hacer nuestras páginas).
La segunda opción (una sóla CSS), ha sido durante los últimos años la más usada (e incluso recomendada). Requiere de una gran curva de aprendizaje puesto que navegadores ha habido (y hay) muchos y cada uno tiene unos
bugs distintos para explotar.
Tal y como va el artículo, todo parece indicar que la tercera opción es la más recomendable. Si hubiera escrito estas líneas hace un año, mi respuesta hubiera sido que la mejor era la segunda (aunque implique muchas búsquedas en Internet y muchas horas de pruebas y más pruebas), pero el mundillo web tiene estas cosas: lo que hasta ayer era el estándar de facto, mañana mismo se convierte en una tecnología obsoleta. Más o menos es lo que ha pasado. Microsoft ha sacado (después de 6 años de sequía) su nuevo navegador (el flamante y renovado
IE 7) y como siempre, para bien o para mal, las reglas del juego han cambiado.
La forma de implantar la tercera opción es hacer una CSS general (que se aplicará a todos los navegadores) desarrollándola en algún cliente web que respete lo más posible los estándares de hojas de estilos (como Opera, Safari o Firefox), y luego hacer otras CSS más reducidas (que servirán para sobrescribir algunas reglas generales) para los (en realidad el) navegadores que no siguen las reglas del juego en algún aspecto. ¿Y cómo se consigue esto? Pues con alguna de las herramientas que la misma Microsoft desarrolló en su momento para competir con la casi desaparecida
NetScape:
los comentarios condicionales en HTML.
Veamos esto con un ejemplo:
...
<head>
...
<link rel="stylesheet" type="text/css" href="./css/all_nav.css" media="screen" title="Hoja de estilos general" />
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="./css/ie_fix.css" media="screen" title="Hoja de estilos específica para IE 6" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="./css/ie7_fix.css" media="screen" title="Hoja de estilos específica para IE 7" />
<![endif]-->
...
</head>
...
Esta técnica (apoyada por la mismísima Microsoft para que los desarrolladores web lleven a cabo la migración de sitios para que funcionen con su nuevo explorador), nos permite tener una CSS general acorde a los estándares promulgados por el W3C que nos servirá para los navegadores actuales y para los que vengan después, y por otro lado, tener localizados, en pequeños archivos, las excepciones a las reglas, sin tener que utilizar molestos y
complicados hacks. Así, el código de nuestras páginas
validará y a la vez, los contenidos (que es lo que realmente importa), se verán de una forma bastante similar en todos los navegadores que se usan hoy en día.