box-sizing

<< sombreado Propiedades de las tablas >>

La propiedad box-sizing te permite controlar cómo se calculan las dimensiones totales de un elemento (ancho y alto), incluyendo el padding y el borde.

Esta propuedad puede tomar dos valores: content-box (valor por defecto) y border-box.

box-sizing: content-box

Esta  propiedad hace que el ancho y alto que estemos dando en nuestro CSS se apliquen sólo al área del contenido del elemento. 

Por ejemplo, si le das a un elemento un width: 100px y luego le ponemos un padding: 10px y un border: 1px, el elemento en total va a ocupar la suma de todo, es decir 122px de ancho (100px del contenido, 10px del padding a la izquierda, 10px del padding a la derecha, 1px del borde a la izquierda y 1px del borde a la derecha).

box-sizing: border-box

Por ejemplo, si le das a un elemento un width: 100px, y luego le añades como en el caso anterior un padding de 10px y un border: 1px, el elemento ocupará 100px de ancho en total. Este comportamiento es "preferido" por la mayoría de los desarrolladores ya que simplifica mucho el trabajo con porcentajes, puesto que el borde u el relleno no "empujan" el tamaño total.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Ejemplo de cajas</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="contenedor">
      <div class="caja caja-content-box">
        Caja con content-box (Predeterminado)
      </div>
      <div class="caja caja-border-box">Caja con border-box (Moderno)</div>
    </div>
  </body>
</html>

Uno de los ejemplos más comunes, es aplicar box-sizing: border-box; a todos los elementos para mantener un modelo de caja predecible en todo el proyecto.

*{
  box-sizing: border-box;
  /* Junto con las propiedades para eliminar los márgenes */
}

<< sombreado Propiedades de las tablas >>