ervdesign.net

Seamos justos

Cuando terminé de publicar la anterior parte de El dichoso modelo de caja, me pregunté si podría haber sido algo más justo con IE, y la verdad es que sí.

Siendo justos y sobre todo precisos, el modelo de caja, falla en las versiones antiguas de IE. La primera versión que implementa correctamente el modelo de caja, es la versión 6, pero sólo en los casos en los que declaramos el tipo de documento, el DOCTYPE.

Una vez hecha esta aclaración, vamos a continuar por donde lo dejamos. Vamos a ver dos gráficos en los que se muestra muy a las claras, el problema de IE para mostrar correctamente la caja:

Primero veamos como se implementa la caja correctamente
Modelo de caja estandar

Y ahora veamos lo que nos hace IE
Modelo de caja estandar

Uff! que lio. Nada más lejos de la realidad. En el primer caso, tenemos un contenido, al cual le damos un width de 400px, más 20 del pading, (10+10), más 20 del border, (10 + 10) y más 20 del margin, nos da un total de caja de 460px. Todo correcto hasta el momento.

En el segundo caso, el que nos interesa solucionar, tenemos un contenido al que le damos un width de 400px. Como IE implementa el padding y el border dentro del width declarado, a esos 400px tendríamos que restarle 40px, 20 del padding, (-10 -10), y 20 del border, (-10 -10), con lo que nuestro contenido, ha quedado reducido a 360px, y de tamaño total de caja tendríamos 420px, que son los 400 que declaramos más 20 del margin, (10 +10), más claro, ¿no?

Con este problema, no era de extrañar que los diseñadores (cuando los navegadores pasaban de implementar estándares) de antes de los estándares, recurrieran a las tablas, para asegurar sus diseños, pero afortunadamente, eso ha cambiado.

El hack

Un hack, aprovecha el error de análisis de la implementación de un navegador, para mostrar u ocultar el CSS en él mismo. Esto, evidentemente, es una ventaja, ya que sólo el navegador en cuestión lee e implementa los datos, mientras que los que implementan bien el modelo de caja, lo dejan pasar como un error. Pero mejor vamos a verlo:

* {
  margin: 0;
  padding: 0;
}

div {
  border: 10px solid red;
  padding: 10px;
  margin: 10px;
  width: 400px !important;
  width /**/:440px;
}

Espero que no parezca demasiado confuso, por que no lo es. Concretamente, el hack que hemos utilizado en esta ocasión, está sacado de CSS Discuss, una gran web, dedicada al estudio y discusión de temas relacionados con nuestra querida CSS. Concretamente hemos utilizado la tercera técnica, (Technique 3). Concretamente, la línea 5 contiene la información para todos los navegadores. Nuestro amigo IE, no implementa la regla !important, pero esto no nos importa, es más, nos favorece. La siguiente línea, la 6, se oculta a IE6, por lo IE5.x y todo navegador que no implemente correctamente la regla !important, conseguirán los 440px para igualar al modelo de caja oficial.

Todo esto puede sonar muy solemne, pero lo mejor es ver como funciona:

comparamos Firefox y Explorer
Comparación entre Firefox 1.5 e IE6

Podéis ver como las cajas por fin parecen iguales. Este enlace Este enlace os puede servir para comparar en diversos navegadores, aunque eso sí, la teoría o ciencia de los hacks, no es para nada exacta, y nos toparemos con problemas, que por h o por b, nos compliquen la vida y la existencia. El diseñador es inherente a los problemas, y que curioso, que casi todos están relacionados con IE.

2 Total TweetBacks: (Tweet this post)
  • : http://tr.im/EK7X 이런 기사를 볼 때 마다 먹먹해진다. 대Ȣ 11/11/09 02:53pm
  • en: RT @nytimeswell Who Should Wear a Mask During Flu Season? http://bit.ly/RDXu 09/14/09 05:19pm

Etiquetado como: caja, CSS, estándares web, modelo, XHTML

Artículos relacionados

Banner Fundación Vicente Ferrer

3 comentarios
  1. [...] Relacionado: Alternate Box Model Hacks Test: Más soluciones alternativas. 3dboxmodel : // hicksdesign Interactive CSS Box Model Demo Garbage In, Garbage Out - CSS !important ervdesign " El dichoso modelo de caja ervdesign " El dichoso modelo de caja II Ref: Diseñorama: El Modelo de Cajas « Anterior: Un día en la blogosfera Siguiente: Para evitar el spam » [...]

    Pingback por Juglar :: Modelo de caja: Box model :: May :: 200516 Junio 2006

  2. No viene a cuento, pero el W3C no da por valido vuestro XHTML….

    Comment por Alan — 12 Agosto 2006

  3. Gracias Alan.
    El blog está gestionado con wordpress, y a mi se me escapa el asunto cuando hablamos de php o mysql. Para esto siempre me ayudo de programadores amigos. Si te fijas, en la web, no en el blog, que está maquetada sólo con xhtml y css, la w3c si le da validez.

    Gracias de nuevo.

    Comment por Enrique13 Agosto 2006

RSS feed for comments.

Disculpa, los comentarios están cerrados.