De forma muy frecuente, en CSS necesitaremos utilizar tamaños. Para indicarlo de una forma apropiada, necesitaremos conocer las unidades que podemos utilizar en CSS para definir dichos tamaños. Existen multitud de unidades. Quizás las más populares son unidades como px
(píxels) o %
(porcentajes), entre muchas otras.
Antes de comenzar a utilizar propiedades que utilicen medidas, como por ejemplo width
(propiedad que sirve para establecer un ancho a un elemento concreto), es conveniente conocer los tipos de unidades que pueden utilizarse.
Tipos de unidades
Cuando estamos empezando a trabajar con CSS, mi consejo suele ser entender primero las unidades de tamaño fijo (o absolutas) y utilizar alguna de ellas, como por ejemplo, el píxel: px
. Una vez se entiendo su uso, vamos pasando a utilizar unidades más complejas.
A continuación una lista de las diferentes unidades que existen en CSS, y sus diferencias:
Tipo de unidad | Unidades | Descripción | + info |
---|---|---|---|
Unidades absolutas | px , cm , mm , Q , in , pt , pc | Unidades estáticas o de tamaño fijo. | Ver |
Unidades relativas | Unidades que dependen de otros factores. | Ver | |
% | Unidades basadas en el tamaño del padre inmediato. | ||
em , rem | Unidades basadas en el tamaño de una tipografía. | ||
ex , rex | Unidades basadas en la altura de una minúscula. | ||
cap , rcap | Unidades basadas en la altura de una mayúscula. | ||
ch , rch | Unidades basadas en las medidas de un carácter europeo. | ||
ic , ric | Unidades basadas en las medidas de un carácter CJK. | ||
lh , rlh | Unidades basadas en en el interlineado. | ||
Relativas al viewport | vw , vh , vmin , vmax , vi , vb | Unidades basadas en la región visible del navegador. | Ver |
svw , svh , svmin , svmax , svi , svb | Idem, en pantallas pequeñas (small viewport) | ||
lvw , lvh , lvmin , lvmax , lvi , lvb | Idem, en pantallas grandes (large viewport). | ||
dvw , dvh , dvmin , dvmax , dvi , dvb | Idem, en pantallas dinámicas (dynamic viewport). | ||
Relativas al contenedor | cqw , cqh , cqmin , cqmax , cqi , cqb | Unidades basadas en un contenedor padre específico. | Ver |
Relativas al grid | fr | Unidad basada en la fracción restante (sólo para grids). | Ver |
Unidades de dirección | deg , grad , rad , turn | Unidades para indicar una dirección. | Ver |
Unidades de duración | s , ms | Unidades para indicar un tiempo concreto. | Ver |
Unidades de frecuencia | hz , khz | Unidades para indicar una frecuencia. | |
Unidades de resolución | dpi , dpcm , dppx | Unidades para indicar resoluciones. |
Como se puede ver, existen más de 60 unidades en CSS, sin embargo, lo verdaderamente importante es entender las categorías, que son sólo 8. Una vez se comprenden bien, entender las diferentes unidades es mucho más sencillo.
Consejo: Cuando se especifican valores de unidades iguales a
0
, como por ejemplo0px
,0em
o0%
, podemos omitir las unidades y escribir simplemente0
, ya que las unidades son redundantes y no son necesarias.
Unidades absolutas
Las unidades absolutas son las más sencillas. Se trata de unidades que son siempre iguales a una unidad de medida física. La más conocida con diferencia es el píxel, una medida fácil para comenzar a trabajar en CSS.
.container {
width: 300px;
height: 200px;
background: indigo;
}
<div class="container"></div>
Sin embargo, conforme avanzamos en el mundo del diseño y desarrollo web, la unidad px
se nos puede quedar corta. Sobre todo cuando tenemos en cuenta que necesitamos un tipo de unidad que se adapte dependiendo de ciertos factores.
► Más sobre unidades absolutas
Unidades relativas
A medida que avanzamos en CSS, es recomendable comenzar a utilizar variables relativas a la tipografía o fuente. Estas son un tipo de unidad que no establece un tamaño fijo, sino que el tamaño depende de ciertas características de la tipografía actual, como el tamaño, interlineado u otras.
Unidades relativas a la fuente
Una de las unidades más conocidas dentro de este apartado es la unidad em
. La explicamos en profundidad en el artículo sobre unidades relativas a fuentes.
.container {
font-size: 1em;
}
Estas unidades son interesantes para tener tamaños más prácticos para utilizar en nuestros diseños. En el siguiente artículo puedes ver más información sobre ellas.
► Más sobre unidades relativas a fuentes
Unidades relativas al viewport
Al conocer ciertos apartados relacionados con el resposive o el diseño web en dispositivos móviles, es muy probable que necesitemos otras unidades un poco más potentes que las anteriores. Por ejemplo, una muy común es necesitar dar un tamaño a un elemento en relación al tamaño de ancho (o de alto) de la ventana del navegador.
body {
margin: 0; /* Reset */
}
.container {
width: 50vw;
height: 50vh;
background: indigo;
}
<div class="container"></div>
La unidad vw
o vh
son ejemplos claros de estas situaciones. Estas unidades dependen exclusivamente del viewport (región visible del navegador). Las explicamos en profundidad en el siguiente artículo.
► Más sobre unidades relativas al viewport
Unidades relativas al padre
En casos mucho más concretos, podemos tener a nuestra disposición unidades como cqw
o cqh
. Estas unidades dependen del tamaño de ancho o de alto de un elemento contenedor específico, y las veremos más adelante en un apartado donde explicamos las CSS Container Queries.
► Más sobre unidades de CSS Container Queries
Unidades relativas al grid
También existe una unidad fr
que veremos más adelante. Dicha unidad, se caracteriza en que sólo puede ser utilizada en contextos donde estemos diseñando con un layout de tipo grid. Significa fracción restante y es una forma muy cómoda y sencilla de dar tamaño a varios elementos teniendo en cuenta el espacio sobrante.
► Más sobre Grid y la unidad fr
Unidades de dirección
En CSS, en ciertos casos, necesitaremos indicar una dirección específica, y para ello haremos uso de las unidades de dirección. A pesar de que la unidad deg
(grados) es la más utilizada, existen otras como grad
(grados centesimales), rad
(radianes) o especialmente turn
, menos utilizadas pero que pueden resultarnos mucho más fácil para calcular direcciones.
Grados | Gradianes | Radianes | Giro |
---|---|---|---|
0 ó 360deg | 0 ó 400grad | 0 ó 6rad | 0 ó 1turn |
45deg | 50grad | 0.78rad (π/4) | 0.125turn |
90deg | 100grad | 1.57rad (π/2) | 0.250turn |
145deg | 150grad | 2.35rad | 0.375turn |
180deg | 200grad | 3.14rad (π) | 0.5turn |
215deg | 250grad | 3.92rad | 0.625turn |
270deg | 300grad | 4.71rad (2π) | 0.75turn |
325deg | 350grad | 5.49rad | 0.875turn |
Si quieres ver una explicación real donde se utilizan en CSS, echa un vistazo a la función linear-gradient()
, utilizadas para crear gradientes o degradados en una cierta dirección.
► Direcciones de gradientes en la función linear-gradient
Unidades de duración
Cuando necesitemos controlar el tiempo o la duración que debe tardar en realizarse algo, como por ejemplo una transición o animación, serán muy útiles las unidades de tiempo. La más conocida es s
(segundos), pero también existe la unidad ms
(milisegundos).
.container {
width: 600px;
transition: width 1s linear;
}
En el ejemplo anterior, definimos que la transición debe tener una duración de 1
segundo. Las explicamos en profundidad en uno de los dos siguientes apartados.
► Más sobre Transiciones CSS y Animaciones CSS
Otras unidades
Existen algunas otras unidades, menos utilizadas actualmente en el día a día, pero que pueden utilizarse en el futuro para definir frecuencias (cantidad de ocurrencias por segundo) o resoluciones (puntos por pulgada, cm o píxel):
- Unidades de frecuencia: como
hz
okhz
. - Unidades de resolución: como
dpi
,dpcm
,dppx
.
Es interesante tener en cuenta que existen una serie de funciones para hacer cálculos con unidades CSS. Son las funciones
calc()
,min()
,max()
oclamp()
, entre otras. Las veremos más adelante, en el capítulo de funciones CSS.