Sólo se requiere un buen marcado (X)HTML y un correcto CSS. Hasta acá estoy hablando de estándares.
La tarea es mucho muy desafiante si de la anterior quitamos el texto que respeten los estándares.
De cara a esto, ya lo debés imaginar; estoy hablando de Internet Explorer 6.0 y anteriores.
La cuota de mercado que este navegador tiene (todavía) no es poca cosa:
- W3Counter habla de poco más de un 28% a septiembre de 2008
- W3Schools indica para el mismo período un 22%
No voy a analizar acá, el por qué tan importante segmento sigue aferrado a un navegador con muchas más contras que pros. Especialmente cuando la oferta de navegadores gratuitos es hoy día tan amplia y difundida.
El problema, de cara al diseño; es la cantidad de inconvenientes que este navegador presenta cuando diseñamos con CSS.
Tampoco voy a hablar acá del modelo de caja, de los hacks y condicionales y de la batería de artilugios a los cuales hay que echar mano cuando este navegador se (nos) rebela.
Cuando tengas problemas de visualización con Internet Explorer: pensá en hasLayout
Qué es hasLayout?
hasLayout es un propiedad propietaria de Microsoft para determinar como se renderizan (dibujan) algunos elementos en la ventana del navegador.
hasLayout tiene un valor booleano, verdadero o falso.
Los siguientes elementos tienen un valor verdadero:
<html>, <body>
<hr>
<img>
<table>, <tr>, <th>, <td>
<input>, <textarea>, <select>, <button>
<iframe>, <applet>, <embed>, <object>
El resto de los elementos no tienen hasLayout; por lo que a veces mediante CSS vemos lo que queremos en un navegador que respete los estándares pero los resultados no son idénticos en Explorer.
El secreto consiste entonces en decirle al Explorer que ese elemento tiene hasLayout.
Cómo?
Con alguna de las siguientes prácticas:
- utilizar float, left o right
- indicar un position: absolute;
- darle al elemento width o height
- hacer que se muestre como display: inline-block; (si corresponde)
- darle un valor zoom:1;
En IE7 algún problema de renderizado, suele arreglarse mediante overflow.
En fin...
Inspirado en el artículo:
On having layout — the concept of hasLayout in IE/Win