Como todo buen maquetador sabe, hay ciertos programas que se pasan los estándares por el forro el pito del sereno. En consecuencia, nos obligan a utilizar esas líneas de código que hacen milagros donde había imposibles llamadas hacks.
Un hack no es más que una manera de introducir código de algún tipo (CSS en este caso), de tal manera que se consigue su carga en un determinado programa, en este caso, en un determinado navegador.
Es por todos conocidos que la familia Internet Explorer interpreta con bastante ligereza lo que una web debe mostrar en realidad; que si yo interpreto los paddings y margins como me da la gana, que si el border también suma para el ancho total, que si esta propiedad no la conozco… etc. Multitudes de fallos por una estrategia errónea de Microsoft que ha ido arrastrando durante años, pero eso es otro tema.
Al grano.
IE8 es un buen navegador en comparación con su predecesor IE7 y exageradamente superior a su ancestro IE6. Respeta bastante bien la mayoría de estándares, pero también tiene “sus cosas”, las cuales vamos a solucionar con las siguientes líneas de código en el CSS.
1) *:first-child+html elemento { propiedad: valor; }
2) elemento { propiedad /*\**/: valor\9 }
¿Qué estamos haciendo con esas líneas?
Si buscamos por Google, veremos que el 2º hack corre por internet como el milagro antigrasa de IE8, pero no es así. Ese código lo interpreta también IE7, por lo que habrá que re-hackear de tal manera que IE7 interprete “otra cosa”.
La solución está en el first-child. Lo pongamos donde lo pongamos será lo que interprete IE7 sin tener el cuenta el hack de los asteriscos. Digamos que actúa como un !important.
Obviamente, esto no valida ni de broma, pero es otra solución si como a mí no os gusta nada llenar el código de condicionales comprobando la versión de IE.
Aunque existe otra forma más la cual no he podido comprobar si valida.
El código que os pongo a continuación no va sobre el CSS si no directamente sobre el archivo XHTML que estéis maquetando y hace algo más “bestia” pero bastante efectivo y que ahorra tiempo, sudor y lágrimas.
<meta http-equiv=”X-UA-Compatible” content=”IE=7″ />
Con ese meta que pondremos dentro del head, haremos que IE8 entre en el Compatibility Mode y renderice la web como IE7. Con esto conseguiremos poder reducir el número de hacks ya que no hará falta tener en cuenta a IE8 a la hora de maquetar. De todas formas, no es la vía más recomendable por ser algo drástica. Sólo debería usarse en el supuesto de que tengamos la web perfectamente adaptada a IE7 y suponga demasiado tiempo su arreglo.
La mejor solución; utilizar Firefox, Safari, Opera o Chrome.
Si, esos navegadores son los mejores para utilizar, pero como le dices eso a tus visitantes. ¿Cómo los convences de cambiarse!? Me ayudó tu articulo, por cierto, el meta funciona. Aunque yo realizo pruebas con IE Collection.
Saludos!
Hola, muy interesante tu artículo, es importante comentar que la etiqueta meta debe ir justo después de la apertura del , si la colocas debajo de otros elementos del head no funciona. Saludos.
Muchas Gracias Brother de mucha ayuda tu post me salvaste la vida a la 1 de la mañana despues de pelearme toda la noche :P