Blog sobre Accesibilidad Web, diseño Web, SEO y recursos gratis en la Web

domingo, 12 de octubre de 2008

Cuando tengas problemas de visualización en IE, pensá en hasLayout

Tener un diseño mediante CSS que se muestre adecuadamente en todos los navegadores que respeten los estándares, no es tarea complicada.
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%
La media, nos dice entonces que 1 de cada 4 usuarios lo sigue utilizando.
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
Share:

Publicidad

Estadísticas