« Escogiendo colores | Main | Bloggers peruanos: reunión virtual »
...

CSS: IE vs. Mozilla

Mucha gente piensa que trabajar con CSS es un dolor de cabeza, pero en realidad no es el CSS el que fastidia sino la diferente forma de interpretar el modelo de cajas que tienen Internet Explorer y Mozilla. Cuando se define el ancho de una capa (usando "div"), y además se le pone espacio alrededor ("padding"), IE incluye ese espacio dentro del ancho definido, mientras que Mozilla da el ancho y le *añade* el espacio extra. Si defino, como para este blog, una capa de 600px de ancho y le pongo 20px de padding, Mozilla me da una capa de 640px de ancho, lo que ocasiona un problema con la capa de las hojitas que quería que flotara justo en el límite derecho de la capa principal.

Después de mucho buscar, vía Google claro, me topé con esa explicación que recordaba vagamente, de las diferentes formas de interpretar. La idea que me dio la solución la encontré en un foro, pues al parecer a todos nos pasa lo mismo: en lugar de darle el "padding" a la capa principal, definir el ancho de la principal y darle 0px de espacio, y dentro de esta principa definir otra con el padding que yo quiera y con ancho igual al de la principal MENOS los px que le pongo en el padding. Osea:

CSS:
#general {
position: absolute;
left: 0px;
top: 0px;
width:600px;
padding:0px;
z-index:1;
}

#contenedor {
width:560px;
padding:20px;
z-index:2;
}

HTML:

<div id="general">
<div id="contenedor">
(aca va el contenido, tablas y todo lo demas)
</div>
</div>

¡Y voilá! Se ve bien en IE Y Mozilla... para todos los fanáticos del código abierto y el software libre. Es un truco que "ensucia" un poco mi código pero era eso o tener unas hojitas flotantes fuera de lugar, o arriesgarme a manejarlo con detectores Java de navegador que no siempre están activados. ¿Alguien tiene alguna otra sugerencia de cómo pude haber manejado esto?

Comentarios ajenos

Justo hace unos días llegué a esa conclusión "por tonteo", pues soy autodidacta en CSS. Resulta que mi weblog no se veía "bonito" en MSIE. Y bueno, que tenía que arreglarlo.

Dichoso MSIE... :)

Saludos!

Abundamos los autodidactas :) Sí, realmente es algo que una vez escuché pero no le dí importancia hasta hoy... vaya que me hizo pasar un mal rato pero felizmente todo tiene su truco.

Aunque tenga tiempo ese post solo quiero decirte q mires la validacion de tu web cuando al estes haciendo, sino luego te sorprenderan errores al visualizarla.

http://validator.w3.org/check?uri=http%3A%2F%2Fc3.openstyles.com%2F&charset=iso-8859-1&doctype=Inline

Gracias por el dato. Lamentablemente a veces se tienen que usar trucos que no validan para mostrar ciertas cosas, aunque en este caso la cantidad monstruosa de errores de validación también se debe a que uso código bastante viejo para esto... Rediseño total? Qué flojera... ^_^

Solo una duda. Cojo bastante bien lo que explicas, pero lo unico q no me encaja es lo del tamaño de la caja contenedora.
Tamaño - padding = 680px??

Saludos

me equivoque en la duda, lo siento...

tamaño (600) - padding (20) = 560px?

Saludos, disculpa las molestias

si, es que el padding se aplica a ambos lados (de hecho a todos lados si no se especifica).
Entonces:

tamaño(600)-padding izq(20px)-padding der(20px)=560px

Hola muchachos, me ha tocado tener que disenar este site web pero como veran, si lo ven en iE y en Explorer la capa contenedora del menu se desfaza, por que pasa esto?. en mozilla se ve como yo lo quiero ver, pero en explorer no, alguna ayuda que me puedan dar?. Un millon de gracias.

Creo que viendo bien el problema de interpretacion de tamaños de divs el IE siempre le agrega 4 o 5 puixeles más por lo que cuando quieres subdividir una div en dos columnas o o si incluten una div dentro de otra siempre habra problemas de concordancia... No hay otra manera de corregir este problema. Puede ser que se use javascript para esto?
Muchas gracias

Solo agreguen..

¡Comenta!

...siempre respetando las reglas de netiquette y del sentido común.
No escribas mensajes en mayúsculas. No pidas que te envíe cosas por e-mail.
Esta es una página personal, no un foro abierto. Para más detalles, consulta las precauciones y advertencias. Gracias.