calc()
y cómo se utiliza?
calc()
se utiliza para combinar y calcular diferentes valores numéricos en CSS. Puedes realizar operaciones como suma (+
), resta (-
), multiplicación (*
), y división (/
). Es especialmente útil cuando necesitas ajustar tamaños o márgenes de manera dinámica, tomando en cuenta el tamaño de otros elementos o el contenedor padre.
.elemento {
width: calc(100% - 50px);
}
En el ejemplo anterior, el ancho de .elemento
se calcula restando 50 píxeles del ancho total (100%
) del contenedor, manteniendo un espacio proporcional sin necesidad de usar JavaScript.
calc()
+
): Combina dos unidades.
height: calc(50px + 10%);
-
): Resta un valor a otro.
margin-left: calc(20% - 15px);
*
): Solo se usa con números simples (sin unidades).
font-size: calc(1rem * 1.5); /* Equivale a 1.5rem */
/
): Al igual que la multiplicación, se usa solo con números.
width: calc(100px / 2); /* Equivale a 50px */
1. Deben dejarse espacios entre los operadores (+
, -
, *
, /
) y los valores.
2. Se pueden combinar diferentes unidades como px
, %
, em
, vh
, vw
, etc.
3. Usar calc()
en propiedades grid-template-columns
o flex
es común para crear distribuciones de elementos más complejas.
calc()
1. Ancho dinámico con márgenes:
.caja {
width: calc(100% - 20px);
margin: 10px;
}
El contenedor .caja
se ajustará al 100% del ancho del contenedor padre, pero restando 20px para tener en cuenta los márgenes laterales.
2. Altura adaptable con barra de encabezado:
.contenido {
height: calc(100vh - 60px);
}
Si tienes un encabezado fijo de 60px, este ejemplo asegura que el contenedor .contenido
ocupe el resto del viewport (100vh
menos el espacio del encabezado).
3. Centrado vertical de un elemento:
.centrado {
position: absolute;
top: calc(50% - 100px);
height: 200px;
}
Ajusta la posición superior para centrar verticalmente un contenedor de 200px de altura, restando la mitad para que quede perfectamente alineado.
4. Combinar unidades para un tamaño flexible:
.flexible {
padding: calc(1rem + 2%);
}
Combina rem
y %
para crear un relleno (padding
) que se adapta tanto al tamaño de fuente como al tamaño del contenedor.
calc()
en CSS?
px
y %
.
Para más detalles, consulta la documentación oficial de MDN sobre calc().
Jorge García
Fullstack developer