Parece que en IE, el ancho incluye el tamaño del relleno. mientras que en FF, el ancho no. ¿Cómo puedo hacer que ambos se comporten igual?
Gracias.
Parece que en IE, el ancho incluye el tamaño del relleno. mientras que en FF, el ancho no. ¿Cómo puedo hacer que ambos se comporten igual?
Gracias.
Respuestas:
IE solía usar el modelo de caja "border-box" más conveniente pero no estándar . En este modelo, el ancho de un elemento incluye el relleno y los bordes. Por ejemplo:
#foo { width: 10em; padding: 2em; border: 1em; }
sería 10em
ancho.
Por el contrario, todos los navegadores temerosos de los estándares adoptan por defecto el modelo de cuadro " caja de contenido" . En este modelo, el ancho de un elemento no incluye relleno ni bordes. Por ejemplo: en
#foo { width: 10em; padding: 2em; border: 1em; }
realidad será 16em
ancho: 10em
+ 2em
relleno para cada lado, + 1em
borde para cada borde.
Si usa una versión moderna de IE con marcado válido , un buen doctype y encabezados apropiados , se adherirá al estándar. De lo contrario, puede forzar a los navegadores modernos que cumplen con los estándares a usar "border-box" a través de:
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
La primera declaración es necesaria para Opera, la segunda es para Firefox, la tercera es para Webkit y Chrome.
Aquí hay una prueba simple que hice hace años para probar qué declaración de tamaño de caja admite su navegador: http://phrogz.net/CSS/boxsizing.html
Tenga en cuenta que Webkit (Safari y Chrome) no admite el padding-box
modelo de caja mediante ninguna declaración.
Una regla simple es tratar de evitar el uso de la propiedad de relleno / margen y ancho para el mismo elemento. es decir, usar algo similar a esto
<div class="width-div">
<div class="padding-div">
...........
...........
</div>
</div>
Me topé con esta pregunta y, aunque tiene un par de años, pensé que podría agregar esto en caso de que alguien se tope con este hilo.
CSS3 ahora tiene una propiedad de tamaño de caja. Si establece, diga,
.bigbox {
box-sizing: border-box;
width: 1000px;
border: 5px solid #333;
padding: 10px;
}
su clase tendrá 1000px de ancho, en lugar de 1030px. Esto es, por supuesto, increíblemente útil para cualquiera que use un borde del tamaño de un píxel con divisores líquidos, porque resuelve un problema insoluble.
Aún mejor, el tamaño de caja es compatible con todos los principales navegadores, excepto IE7 y versiones inferiores. Para incluir todos los elementos dentro de la dimensión de ancho o alto, establezca el tamaño del cuadro en borde-cuadro. A agregar otros elementos al ancho y / o alto, que es el valor predeterminado, puede establecer el tamaño del cuadro en "cuadro de contenido".
No estoy seguro del estado actual de la sintaxis del navegador, pero sigo incluyendo los prefijos -moz y -webkit:
.bigbox{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
¿Tienes un doctype declarado? Cuando comencé a codificar html tuve este problema, y era por no tener un doctype declarado. Mi favorito es:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...
</html>