Error o problemas con Padding en Internet explorer 6 y el modelo de caja
Bueno continuando con nuetra seccion sobre errores y problemas que tenemos cuando utilizamos CSS, veremos un problema muy comun y que si no lo sabes entonces no vas a poder saber que a veces los elementos HTML se ven diferentes en Internet explorer o en Firefox o en chrome. Se trata sobre dos propiedades de css: Padding y Border.
Primero para los que no lo saben/recuerdan, el padding es el margen interno de un elemento y el border es el borde xD.
El error
Quienes diseñaron el estandard de CSS, estipularon que el ancho de un elemento esta dado por el width mas el padding izquiero, mas el padding derecho, mas el borde izquiero, mas el borde derecho. Es decir si yo hago que un div tenga las siguientes propiedades: div{width: 150px; padding: 0 10px 0 15px; border: 1px solid #999999; }, entonces este div tendria que tener de ancho (150 + 10 + 15 + 1 + 1)px = 177px.
Bueno perfecto
pero… los muchachos de Microsoft otra vez aqui nos complicaron la vida, ¿porque? bueeeeno, porque para internet explorer el padding y el borde no se suman al width como lo indican los estandares, sino que el ancho total del elemento sera el que se especifique en el width y el padding y el border se cuentan para adentro. es decir que en el ejemplo anterior: div{width: 150px; padding: 0 10px 0 15px; border: 1px solid #999999; } en internet explorer se ve de ancho 150px y no 177px como especifica la W3C.
Aqui una imagen que intenta aclarar esto que estuve diciendo en palabras:
¿Que podemos hacer para solucionar este tema?
Yo basicamente no soy partidario de utilizar hacks de CSS cuandos puede hacer algo sin engañar a los navegadores. Basicamente para poder dar una solucion veamos los casos en los que vamos o no vamos a tener problemas:
No vamos a tener problemas si: No especificamos un ancho o alto del elemento, porque si por ejemplo colocamos un div sin width, entonces este se ajustara al tamaño del elemento interno y a esto se le sumara el padding y el borde correspondiente
Vamos a tener problemas si: Especificamos un ancho o alto de un div con padding o con border. Ya explique el porque antes, pero ¿que podemos hacer?
Una de las soluciones es utilizar un elemento que tenga el ancho que queremos colocar (en nuestro ejemplo 177px) y dentro colocar el elemento SIN colocarle el ancho pero le ponemos el padding que corresponda. En el ejemplo quedaria asi:
Codigo HTML
<div> <div>contenido</div> </div>
Codigo CSS
div{ width: 177px; } div div{ padding: 0 10px 0 15px; border: 1px solid #999999; }
Otra solucion es utilizar un hack que lo que hace es indicarle a internet explorer algo pero que los otros exploradores lo ignoran, como no me gusta esta practica no la expongo aqui pero pueden googlearlo y van a encontrar muchos ejemplos de esto, busquen box model hack
Espero les sea util el articulo y como siempre nte cualquier duda, error que detecten o correccion comenten
Entradas Relacionadas:
- Problemas y errores Comunes en CSS con Internet Explorer 6, 7 y Firefox Problemas mas comunes: Centrar pagina o div correctamente en todos...
- Como centrar Horizontalmente una pagina (solucionar problema de Internet Explorer 6) Bueno comenzaremos nuestra seccion de Errores de CSS con uno...
- Problema en listas de navegacion UL LI A, Efecto de escalera – Errores en Internet explorer 6 Sigo añadiendo mas documentacion a la seccion de errores mas...
- ¿Problemas con los Botones de Tweetmeme? TweetMeme Button Error – Timeout o 404 Los botones de Tweetmeme son muy útiles en los blog para que...
- ¿Queres saber porque no poner yes to all o si a todo en Internet explorer? Hola gente, navegando en algunas blogs encontre esta curiosidad. Si...


Hace 626 días | Ricardo
Gracias Muchacho, es muy valiosa vuestra ayuda…
Hace 468 días | isaac
Hola he estado leyendo todo este articulo, pues tenía problemas cuando en un div con ancho fijo y alto le ponía un padding .Me costó mucho averiguar porque en internet Explorer siempre la caja se veía más pequeña que el firefox por ejemplo.Ya entendí con este articulo cual era el problema. Mi pregunta es la siguiente, en un artículo que lei pone que en internet explorer 8 este problema está resuelto, pero yo no veo que este resuelto, os explico:
cuando visualizo la pagina creada sin estar en el servidor alojada todavía ,Internet Explorer 8 se comporta igual que firefox, establece bien la propiedad padding junto con los demás, pero lo curioso de todos es que cuando subo la pagina al servidor se comporta como internet 6, es decir las dimensiones del borde son incluidas a las dimensiones del elemento. Por favor si alguien sabe algo me gustaría que me contestaran, ya que no se si en internet Explorer 8 sigue este problema sin estar resuelto. Porque es muy raro que sin estar alojado haga una cosa y estando alojado haga otra
Agradezco una respuesta
Gracias
Hace 467 días | dacho
Hola Issac, gracias por tu comentario y me alegra que te haya servido el artículo.
Con respecto a tu problema, me parece muy raro. Yo no utilizo IE desde hace mas de 5 años (salvo cuando diseño) asi como tampoco windows asi que no he tenido esa clase de problemas.
En teoria es imposible que suceda esto, el porque es porque una pagina web es un documento que se envia y se ejecuta. Creo que lo que puede estar pasando es que no estes mirando la pagina correctamente.
A ver si me explico, a todos nos ha pasado alguna vez que subimos la pagina por ejemplo en miweb.com/prueba y luego hacemos cambios y la volvemos a subir pero nos olvidamos de enviar de nuevo el CSS o algo o lo colocamos en otra carpeta como en miweb.com/Prueba (con mayuscula) y entonces pareciera que los cambios están mal pero realmente es que se esta trayendo la pagina sin los cambios porque los cambios los subimos a otra parte.
Te recomiendo que (primero hace un backup) borres lo del servidor y lo subas nuevamente para ver si se soluciona!…
Saludos y si podes cuando encuentres donde esta el problema comentes que era lo que sucedió!…
Hace 465 días | isaac
Hola gracias por tu rápida contestación. Yo es que trabajo con internet Explorer y firefox para buscar la compatibilidad en los dos navegadores, aunque como siempre el Explorer hace lo que le da la gana jeje. Mira sobre la cuestión que me dices de lo que puede ser mi problema, es imposible te explico porque:
He hecho estas pruebas miles de veces y siempre subo todos los archivos, por ejemplo tengo sinopsis.htm hago la modificación aquí la pruebo en internet se ve bien, después subo esa misma página al servidor y nada el problema de padding y supuestamente ese problema está solucionado en Explorer 8, lo que ya no sé si es verdad que está solucionado o no, lo que sé que es algo muy raro, porque como tú dices, el navegador interpreta el código cuando está en el servidor o cuando no está de la misma manera. La página está alojada en un servidor gratuito? Sé que esto no tiene nada que ver, pero podría ser? La verdad es algo muy raro.