Primitivos
Espaciado
La escala de espaciado de DesignToken101, con base de 4 px, de dónde sale, cómo encajar en ella los valores de tu inventario y por qué los espaciados negativos viven en código.
Última revisión:
El espaciado se aplica al padding, al gap y a la separación entre bloques. En esta lección verás la escala de DesignToken101, de dónde sale y cómo encajar en ella tus propios valores.
En esta página
- La escala de DesignToken101
- De dónde sale la base de 4 px
- Encajar tu inventario en la escala
- Espaciado negativo
- En Figma
- Lo que te llevas
La escala de DesignToken101
Trece pasos. El número del nombre es proporcional al valor: 100 = 4 px.
| Token | px (Figma) | rem (CSS) |
|---|---|---|
space/0 | 0 | 0 |
space/050 | 2 | 0.125 |
space/100 | 4 | 0.25 |
space/150 | 6 | 0.375 |
space/200 | 8 | 0.5 |
space/300 | 12 | 0.75 |
space/400 | 16 | 1 |
space/600 | 24 | 1.5 |
space/800 | 32 | 2 |
space/1200 | 48 | 3 |
space/1600 | 64 | 4 |
space/2400 | 96 | 6 |
space/4000 | 160 | 10 |
Fíjate en cómo crecen los saltos: de 2 en 2 px al principio y de 32, 48 o 64 px al final. Entre dos elementos pequeños, 2 px se notan; entre dos secciones de una página, no. Por eso la escala tiene más pasos abajo que arriba.
Figma guarda el valor en píxeles y el CSS lo escribe en rem. Por qué, lo viste en Tipos simples.
De dónde sale la base de 4 px
La escala es la del Simple Design System (SDS) de Figma, paso por paso: --sds-size-space-100 mide 0.25rem (4 px) y --sds-size-space-4000, 10rem (160 px) (SDS: theme.css).
Coincide con Tailwind CSS. Su variable --spacing vale 0.25rem por defecto, y las utilidades de espaciado la multiplican: p-4 es calc(var(--spacing) * 4), 16 px (Tailwind CSS: Theme variables, Padding). Así, space/400 mide lo mismo que p-4.
Otros sistemas usan otra base. Atlassian parte de 8 px y su número es un porcentaje de esa base: space.100 mide 8 px y space.200, 16 px (Atlassian: Spacing).
Recomendación
DesignToken101 usa la base de 4 px del SDS porque permite pasos finos en los componentes (2, 4, 6 px) y coincide con la de Tailwind CSS. Si tu equipo ya trabaja con una base de 8 px, mantenla: lo importante es que el número del nombre sea proporcional al valor.
Encajar tu inventario en la escala
Toma los espaciados de tu inventario del módulo 1, ordenados de menor a mayor, y lleva cada uno al paso más cercano:
| Valor del inventario | Veces | Paso de la escala | Qué cambia |
|---|---|---|---|
| 15 px | 3 | space/400 (16 px) | +1 px, imperceptible |
| 16 px | 22 | space/400 (16 px) | Nada |
| 20 px | 4 | space/400 o space/600 | Hay que decidir |
| 40 px | 1 | space/1200 (48 px) | Revisar el diseño |
- Los casi duplicados se funden en un paso. Es el caso de 15 y 16 px.
- Un valor entre dos pasos obliga a decidir. Mira dónde aparece y qué paso tienen sus vecinos.
- Un valor que aparece una vez rara vez justifica un paso nuevo. Es más probable que sea un error del diseño.
Recomendación
Añade un paso a la escala cuando un valor se repite en varios componentes y ningún paso existente funciona. Si añades uno, sigue la regla del número: 20 px sería space/500.
Espaciado negativo
Un espaciado negativo superpone elementos: dos avatares que se solapan, por ejemplo. Los sistemas lo nombran en un nivel propio: --sds-size-space-negative-100 en el SDS (SDS: theme.css) y space.negative.100 en Atlassian (Atlassian: Spacing).
En CSS, la superposición se hace con márgenes negativos, que son válidos (MDN: margin). El gap y el padding no admiten negativos (MDN: gap, MDN: padding).
Figma acepta variables con valores negativos (Figma: Overview of variables). Lo probamos en el archivo de DesignToken101:
- Una variable de −8 en el gap de un auto layout funciona: los elementos se solapan.
- La misma variable se puede aplicar al padding, y Figma acepta un padding de −8.
- En la API de plugins hay un único scope,
GAP, para gap y padding. No se puede limitar la variable a un uso.
Aviso
En Figma, un espaciado negativo se aplica al gap o al padding. En CSS, ninguna de las dos propiedades lo admite: hay que traducirlo a un margen negativo. Un token negativo en Figma invita a dibujar algo que el código no puede copiar tal cual.
Recomendación
En DesignToken101 los espaciados negativos (space/negative/100, 200, 300, 400 y 600) son tokens de código. No existen en Figma. Es el mismo criterio que viste en Una sola fuente de verdad.
En Figma
En la colección Primitives, crea una variable Number por paso (Figma: Create and manage variables):
- Nómbrala con la ruta completa, por ejemplo
space/400. Figma crea el grupospaceal escribir la barra. - Escribe el valor en píxeles, sin unidad:
16. - En Edit variable, abre el scope y deja marcado el espaciado de auto layout. La ayuda de Figma lo lista como Gap y Padding; en la exportación aparece como un único scope,
GAP. - Añade el code syntax Web:
var(--t101-space-400). - No la ocultes al publicar.
Recomendación
Los espaciados se publican porque el diseñador los aplica directamente: DesignToken101 no tiene tokens semánticos de espaciado. Los colores, en cambio, se ocultan, porque al diseñar se usan sus semánticos. El criterio completo está en La colección completa.
Los trece pasos salen de Figma; los negativos, del archivo de tokens de código. Al generar el CSS, quedan juntos:
:root {
--t101-space-400: 1rem; /* Figma: space/400 = 16 */
--t101-space-negative-200: -0.5rem; /* código: space/negative/200 */
}En el tema de Tailwind CSS, cada paso tiene su utilidad con el mismo número: p-400, gap-400.
@theme inline {
--spacing-400: var(--t101-space-400);
}Lo que te llevas
- El espaciado es una escala de base 4 px en la que el número es proporcional al valor:
space/400mide 16 px. - Cada valor del inventario se lleva al paso más cercano; un paso nuevo se añade solo si se repite.
- El espaciado negativo vive en código, porque ni el gap ni el padding de CSS lo admiten.