2012-02-22 17 views
5

Básicamente tengo un div que quiero al 100% de ancho. Sin embargo, también quiero que tenga algo de relleno. Pero cuando agrego el relleno, se agrega el ancho, lo que significa que mi div ahora se sale de la pantalla y hay una barra de desplazamiento horizontal.Ajuste de ancho de relleno/margen incluido?

Por lo general, lo compenso simplemente haciendo que el div sea un porcentaje menor (como el 95%, o el 90%).

Me preguntaba si hay formas más elegantes de manejar esta situación?

Respuesta

3

Prueba a poner el relleno y el 5% y el ancho a 90% (100-5x2)

9

Eche un vistazo a box-sizing.

.example { 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing:  border-box; 
} 

Por defecto, el ancho de un elemento se calcula con respecto a su cuadro de contenido. Por lo tanto, se agrega un relleno aplicado al ancho. Si cambia el modelo de caja a border-box, el relleno se incluye en el ancho. Para compatibilidad echar un vistazo a caniuse.com

+0

Interesante. Solo una observación, no parece tener nada para el margen. – Johannes

+0

Creo que el margen se considera fuera del elemento y, por lo tanto, no forma parte de ningún modelo de caja. – Sirko

+1

No se lo quité a Vijay, pero creo que esta es la respuesta universal, especialmente cuando no se sabe cuántas celdas habrá en las tablas. – Shane

0

Hay cuatro cosas importantes implican en CSS modelo de caja. i) Margen ii) Border iii) Padding iv) contenido

Cuando establecimos anchura entonces estamos estableciendo esencialmente ancho de contenido para la adición de relleno significa aumento global de anchura.

Consulte los siguientes recursos y podrá conocerlo todo.

http://www.w3.org/TR/CSS2/box.html

http://css-tricks.com/the-css-box-model/

Y se puede manejar esta situación utilizando% o incluso si se calcula correctamente px de ancho, si también ha configurado frontera o incluso quieren crear márgenes.

element{ 
    width: 96%; 
    padding: 0 2%; 
} 
0

Por defecto es un div width: auto la que (suponiendo posicionamiento normal, la pantalla y la falta de flotación) hará que se llene el contenedor (que representan los márgenes, el relleno y el borde).

Simplemente déjalo en width: auto en lugar de establecer un ancho explícito o porcentual.

+0

Eso funciona solo para elementos que son 100% por defecto, como 'div's. No puede hacer lo mismo para otros elementos como 'entrada' o cualquier cosa que no se expanda al 100% de manera predeterminada. –

+0

Dado que la pregunta se refiere a los divs repetidamente, eso no es un problema. – Quentin

Cuestiones relacionadas