Design Tokens
I Design Tokens rappresentano un approccio ormai diffuso per gestire i sistemi di design.
Trasformano valori riutilizzabili come colori, caratteri e spaziatura in variabili che possono essere utilizzate in modo coerente in tutto un sistema di design.
mdui utilizza Proprietà CSS personalizzate globali per implementare i Design Tokens, mantenendo gli stili coerenti in tutti i componenti. Modificando queste Proprietà, puoi regolare globalmente gli stili di tutti i componenti mdui. Per i tuoi stili, dai la priorità all'utilizzo di queste Proprietà CSS personalizzate per mantenere la coerenza con gli stili dei componenti mdui. Ciò garantisce anche che i tuoi stili si aggiornino in modo sincrono quando si modificano gli schemi cromatici dinamici.
Colore
mdui fornisce Proprietà CSS personalizzate sia per la Modalità chiara che per quella scura. In Modalità chiara, la proprietà è denominata --mdui-color-{name}-light e in Modalità scura è --mdui-color-{name}-dark.
Inoltre, mdui fornisce Proprietà CSS personalizzate denominate --mdui-color-{name}. Questa Proprietà fa riferimento a --mdui-color-{name}-light in Modalità chiara e a --mdui-color-{name}-dark in Modalità scura, consentendo il cambio automatico del colore in base alla modalità corrente.
Per modificare colori specifici, regola sia --mdui-color-{name}-light che --mdui-color-{name}-dark. Quando leggi le proprietà CSS personalizzate, usa la proprietà --mdui-color-{name}.
Queste Proprietà CSS personalizzate memorizzano tre valori di canale RGB separati da virgole. Ecco un esempio di come utilizzare le proprietà CSS personalizzate del colore:
/* Modifica il valore del colore primario */
:root {
--mdui-color-primary-light: 103, 80, 164;
--mdui-color-primary-dark: 208, 188, 255;
}
/* Imposta il colore di sfondo dell'elemento foo su primario */
.foo {
background-color: rgb(var(--mdui-color-primary));
}
/* Imposta il colore di sfondo dell'elemento bar su primario con opacità 0.8 */
.bar {
background-color: rgba(var(--mdui-color-primary), 0.8);
}
Per generare un nuovo Schema Cromatico, usa la funzione setColorScheme. Questa funzione genera uno Schema Cromatico completo in base al colore fornito.
| Nome Colore | Proprietà CSS Personalizzata | Predefinito | Esempio |
|---|---|---|---|
| Primary | --mdui-color-primary-light |
103, 80, 164 |
|
--mdui-color-primary-dark |
208, 188, 255 |
||
--mdui-color-primary |
|||
| Primary container | --mdui-color-primary-container-light |
234, 221, 255 |
|
--mdui-color-primary-container-dark |
79, 55, 139 |
||
--mdui-color-primary-container |
|||
| On primary | --mdui-color-on-primary-light |
255, 255, 255 |
|
--mdui-color-on-primary-dark |
55, 30, 115 |
||
--mdui-color-on-primary |
|||
| On primary container | --mdui-color-on-primary-container-light |
33, 0, 94 |
|
--mdui-color-on-primary-container-dark |
234, 221, 255 |
||
--mdui-color-on-primary-container |
|||
| Inverse primary | --mdui-color-inverse-primary-light |
208, 188, 255 |
|
--mdui-color-inverse-primary-dark |
103, 80, 164 |
||
--mdui-color-inverse-primary |
|||
| Secondary | --mdui-color-secondary-light |
98, 91, 113 |
|
--mdui-color-secondary-dark |
204, 194, 220 |
||
--mdui-color-secondary |
|||
| Secondary container | --mdui-color-secondary-container-light |
232, 222, 248 |
|
--mdui-color-secondary-container-dark |
74, 68, 88 |
||
--mdui-color-secondary-container |
|||
| On secondary | --mdui-color-on-secondary-light |
255, 255, 255 |
|
--mdui-color-on-secondary-dark |
51, 45, 65 |
||
--mdui-color-on-secondary |
|||
| On secondary container | --mdui-color-on-secondary-container-light |
30, 25, 43 |
|
--mdui-color-on-secondary-container-dark |
232, 222, 248 |
||
--mdui-color-on-secondary-container |
|||
| Tertiary | --mdui-color-tertiary-light |
125, 82, 96 |
|
--mdui-color-tertiary-dark |
239, 184, 200 |
||
--mdui-color-tertiary |
|||
| Tertiary container | --mdui-color-tertiary-container-light |
255, 216, 228 |
|
--mdui-color-tertiary-container-dark |
99, 59, 72 |
||
--mdui-color-tertiary-container |
|||
| On tertiary | --mdui-color-on-tertiary-light |
255, 255, 255 |
|
--mdui-color-on-tertiary-dark |
73, 37, 50 |
||
--mdui-color-on-tertiary |
|||
| On tertiary container | --mdui-color-on-tertiary-container-light |
55, 11, 30 |
|
--mdui-color-on-tertiary-container-dark |
255, 216, 228 |
||
--mdui-color-on-tertiary-container |
|||
| Surface | --mdui-color-surface-light |
254, 247, 255 |
|
--mdui-color-surface-dark |
20, 18, 24 |
||
--mdui-color-surface |
|||
| Surface dim | --mdui-color-surface-dim-light |
222, 216, 225 |
|
--mdui-color-surface-dim-dark |
20, 18, 24 |
||
--mdui-color-surface-dim |
|||
| Surface bright | --mdui-color-surface-bright-light |
254, 247, 255 |
|
--mdui-color-surface-bright-dark |
59, 56, 62 |
||
--mdui-color-surface-bright |
|||
| Surface container lowest | --mdui-color-surface-container-lowest-light |
255, 255, 255 |
|
--mdui-color-surface-container-lowest-dark |
15, 13, 19 |
||
--mdui-color-surface-container-lowest |
|||
| Surface container low | --mdui-color-surface-container-low-light |
247, 242, 250 |
|
--mdui-color-surface-container-low-dark |
29, 27, 32 |
||
--mdui-color-surface-container-low |
|||
| Surface container | --mdui-color-surface-container-light |
243, 237, 247 |
|
--mdui-color-surface-container-dark |
33, 31, 38 |
||
--mdui-color-surface-container |
|||
| Surface container high | --mdui-color-surface-container-high-light |
236, 230, 240 |
|
--mdui-color-surface-container-high-dark |
43, 41, 48 |
||
--mdui-color-surface-container-high |
|||
| Surface container highest | --mdui-color-surface-container-highest-light |
230, 224, 233 |
|
--mdui-color-surface-container-highest-dark |
54, 52, 59 |
||
--mdui-color-surface-container-highest |
|||
| Surface variant | --mdui-color-surface-variant-light |
231, 224, 236 |
|
--mdui-color-surface-variant-dark |
73, 69, 79 |
||
--mdui-color-surface-variant |
|||
| On surface | --mdui-color-on-surface-light |
28, 27, 31 |
|
--mdui-color-on-surface-dark |
230, 225, 229 |
||
--mdui-color-on-surface |
|||
| On surface variant | --mdui-color-on-surface-variant-light |
73, 69, 78 |
|
--mdui-color-on-surface-variant-dark |
202, 196, 208 |
||
--mdui-color-on-surface-variant |
|||
| Inverse surface | --mdui-color-inverse-surface-light |
49, 48, 51 |
|
--mdui-color-inverse-surface-dark |
230, 225, 229 |
||
--mdui-color-inverse-surface |
|||
| Inverse on surface | --mdui-color-inverse-on-surface-light |
244, 239, 244 |
|
--mdui-color-inverse-on-surface-dark |
49, 48, 51 |
||
--mdui-color-inverse-on-surface |
|||
| Background | --mdui-color-background-light |
254, 247, 255 |
|
--mdui-color-background-dark |
20, 18, 24 |
||
--mdui-color-background |
|||
| On background | --mdui-color-on-background-light |
28, 27, 31 |
|
--mdui-color-on-background-dark |
230, 225, 229 |
||
--mdui-color-on-background |
|||
| Error | --mdui-color-error-light |
179, 38, 30 |
|
--mdui-color-error-dark |
242, 184, 181 |
||
--mdui-color-error |
|||
| Error container | --mdui-color-error-container-light |
249, 222, 220 |
|
--mdui-color-error-container-dark |
140, 29, 24 |
||
--mdui-color-error-container |
|||
| On error | --mdui-color-on-error-light |
255, 255, 255 |
|
--mdui-color-on-error-dark |
96, 20, 16 |
||
--mdui-color-on-error |
|||
| On error container | --mdui-color-on-error-container-light |
65, 14, 11 |
|
--mdui-color-on-error-container-dark |
249, 222, 220 |
||
--mdui-color-on-error-container |
|||
| Outline | --mdui-color-outline-light |
121, 116, 126 |
|
--mdui-color-outline-dark |
147, 143, 153 |
||
--mdui-color-outline |
|||
| Outline variant | --mdui-color-outline-variant-light |
196, 199, 197 |
|
--mdui-color-outline-variant-dark |
68, 71, 70 |
||
--mdui-color-outline-variant |
|||
| Shadow | --mdui-color-shadow-light |
0, 0, 0 |
|
--mdui-color-shadow-dark |
0, 0, 0 |
||
--mdui-color-shadow |
|||
| Surface tint | --mdui-color-surface-tint-color-light |
103, 80, 164 |
|
--mdui-color-surface-tint-color-dark |
208, 188, 255 |
||
--mdui-color-surface-tint-color |
|||
| Scrim | --mdui-color-scrim-light |
0, 0, 0 |
|
--mdui-color-scrim-dark |
0, 0, 0 |
||
--mdui-color-scrim |
Raggio d'angolo
mdui fornisce 7 dimensioni di raggio d'angolo. Queste Proprietà CSS personalizzate consentono di regolare il raggio d'angolo:
/* Modifica la dimensione del raggio d'angolo extra-piccolo */
:root {
--mdui-shape-corner-extra-small: 0.3rem;
}
/* Imposta il raggio d'angolo dell'elemento foo su extra-piccolo */
.foo {
border-radius: var(--mdui-shape-corner-extra-small);
}
| Proprietà CSS Personalizzata | Predefinito | Esempio |
|---|---|---|
--mdui-shape-corner-none |
0 |
|
--mdui-shape-corner-extra-small |
0.25rem |
|
--mdui-shape-corner-small |
0.5rem |
|
--mdui-shape-corner-medium |
0.75rem |
|
--mdui-shape-corner-large |
1rem |
|
--mdui-shape-corner-extra-large |
1.75rem |
|
--mdui-shape-corner-full |
1000rem |
Tipografia
mdui fornisce 15 stili tipografici. Ogni stile include Proprietà per l'altezza della linea, la dimensione del carattere, la spaziatura delle lettere e il peso del carattere.
Ecco un esempio di come utilizzare queste Proprietà:
/* Modifica lo stile del testo Body large */
:root {
--mdui-typescale-body-large-line-height: 1.6rem;
--mdui-typescale-body-large-size: 1.2rem;
--mdui-typescale-body-large-tracking: 0.01rem;
--mdui-typescale-body-large-weight: 400;
}
/* Imposta lo stile del testo dell'elemento foo su Body large */
.foo {
line-height: var(--mdui-typescale-body-large-line-height);
font-size: var(--mdui-typescale-body-large-size);
letter-spacing: var(--mdui-typescale-body-large-tracking);
font-weight: var(--mdui-typescale-body-large-weight);
}
| Proprietà CSS Personalizzata | Predefinito | Esempio |
|---|---|---|
--mdui-typescale-display-large-line-height |
4rem |
Display large |
--mdui-typescale-display-large-size |
3.5625rem |
|
--mdui-typescale-display-large-tracking |
0 |
|
--mdui-typescale-display-large-weight |
400 |
|
--mdui-typescale-display-medium-line-height |
3.25rem |
Display medium |
--mdui-typescale-display-medium-size |
2.8125rem |
|
--mdui-typescale-display-medium-tracking |
0 |
|
--mdui-typescale-display-medium-weight |
400 |
|
--mdui-typescale-display-small-line-height |
2.75rem |
Display small |
--mdui-typescale-display-small-size |
2.25rem |
|
--mdui-typescale-display-small-tracking |
0 |
|
--mdui-typescale-display-small-weight |
400 |
|
--mdui-typescale-headline-large-line-height |
2.5rem |
Headline large |
--mdui-typescale-headline-large-size |
2rem |
|
--mdui-typescale-headline-large-tracking |
0 |
|
--mdui-typescale-headline-large-weight |
400 |
|
--mdui-typescale-headline-medium-line-height |
2.25rem |
Headline medium |
--mdui-typescale-headline-medium-size |
1.75rem |
|
--mdui-typescale-headline-medium-tracking |
0 |
|
--mdui-typescale-headline-medium-weight |
400 |
|
--mdui-typescale-headline-small-line-height |
2rem |
Headline small |
--mdui-typescale-headline-small-size |
1.5rem |
|
--mdui-typescale-headline-small-tracking |
0 |
|
--mdui-typescale-headline-small-weight |
400 |
|
--mdui-typescale-title-large-line-height |
1.75rem |
Title large |
--mdui-typescale-title-large-size |
1.375rem |
|
--mdui-typescale-title-large-tracking |
0 |
|
--mdui-typescale-title-large-weight |
400 |
|
--mdui-typescale-title-medium-line-height |
1.5rem |
Title medium |
--mdui-typescale-title-medium-size |
1rem |
|
--mdui-typescale-title-medium-tracking |
0.009375rem |
|
--mdui-typescale-title-medium-weight |
500 |
|
--mdui-typescale-title-small-line-height |
1.25rem |
Title small |
--mdui-typescale-title-small-size |
0.875rem |
|
--mdui-typescale-title-small-tracking |
0.00625rem |
|
--mdui-typescale-title-small-weight |
500 |
|
--mdui-typescale-label-large-line-height |
1.25rem |
Label large |
--mdui-typescale-label-large-size |
0.875rem |
|
--mdui-typescale-label-large-tracking |
0.00625rem |
|
--mdui-typescale-label-large-weight |
500 |
|
--mdui-typescale-label-medium-line-height |
1rem |
Label medium |
--mdui-typescale-label-medium-size |
0.75rem |
|
--mdui-typescale-label-medium-tracking |
0.03125rem |
|
--mdui-typescale-label-medium-weight |
500 |
|
--mdui-typescale-label-small-line-height |
0.375rem |
Label small |
--mdui-typescale-label-small-size |
0.6875rem |
|
--mdui-typescale-label-small-tracking |
0.03125rem |
|
--mdui-typescale-label-small-weight |
500 |
|
--mdui-typescale-body-large-line-height |
1.5rem |
Body large |
--mdui-typescale-body-large-size |
1rem |
|
--mdui-typescale-body-large-tracking |
0.009375rem |
|
--mdui-typescale-body-large-weight |
400 |
|
--mdui-typescale-body-medium-line-height |
1.25rem |
Body medium |
--mdui-typescale-body-medium-size |
0.875rem |
|
--mdui-typescale-body-medium-tracking |
0.015625rem |
|
--mdui-typescale-body-medium-weight |
400 |
|
--mdui-typescale-body-small-line-height |
1rem |
Body small |
--mdui-typescale-body-small-size |
0.75rem |
|
--mdui-typescale-body-small-tracking |
0.025rem |
|
--mdui-typescale-body-small-weight |
400 |
Opacità del Livello di Stato
I componenti mdui, come <mdui-button>, utilizzano uno strato overlay semi-trasparente durante gli stati di interazione come hover, focus, pressione e trascinamento. L'opacità di questo strato può essere regolata modificando le seguenti Proprietà CSS personalizzate:
/* Modifica l'opacità del livello di stato */
:root {
--mdui-state-layer-hover: 0.08;
--mdui-state-layer-focus: 0.12;
--mdui-state-layer-pressed: 0.12;
--mdui-state-layer-dragged: 0.16;
}
| Proprietà CSS Personalizzata | Predefinito | Esempio |
|---|---|---|
--mdui-state-layer-hover |
0.08 |
|
--mdui-state-layer-focus |
0.12 |
|
--mdui-state-layer-pressed |
0.12 |
|
--mdui-state-layer-dragged |
0.16 |
Elevazione
I componenti mdui utilizzano l'elevazione per creare profondità con le ombre. Puoi regolare queste ombre modificando le proprietà CSS personalizzate:
/* Modifica l'elevazione di livello1 */
:root {
--mdui-elevation-level1:
0 0.5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%),
0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%);
}
/* Imposta l'elevazione dell'elemento foo su livello1 */
.foo {
box-shadow: var(--mdui-elevation-level1);
}
| Proprietà CSS Personalizzata | Predefinito | Esempio |
|---|---|---|
--mdui-elevation-level0 |
none |
|
--mdui-elevation-level1 |
0 0.5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%), 0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%) |
|
--mdui-elevation-level2 |
0 0.85px 3px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.25px 1px 0 rgba(var(--mdui-color-shadow), 3.9%) |
|
--mdui-elevation-level3 |
0 1.25px 5px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.3333px 1.5px 0 rgba(var(--mdui-color-shadow), 3.9%) |
|
--mdui-elevation-level4 |
0 1.85px 6.25px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.5px 1.75px 0 rgba(var(--mdui-color-shadow), 3.9%) |
|
--mdui-elevation-level5 |
0 2.75px 9px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.25px 3px 0 rgba(var(--mdui-color-shadow), 3.9%) |
Animazione
I componenti mdui incorporano animazioni, con curve di easing e durate personalizzabili. Queste Proprietà possono essere modificate utilizzando le proprietà CSS personalizzate:
/* Modifica la curva di easing standard e la durata short1 */
:root {
--mdui-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
--mdui-motion-duration-short1: 40ms;
}
/* Applica la curva di easing standard e la durata short1 all'effetto di transizione dell'elemento foo */
.foo {
transition: all var(--mdui-motion-duration-short1)
var(--mdui-motion-easing-standard);
}
| Tipo | Proprietà CSS Personalizzata | Predefinito |
|---|---|---|
| Curva di Easing | --mdui-motion-easing-linear |
cubic-bezier(0, 0, 1, 1) |
--mdui-motion-easing-standard |
cubic-bezier(0.2, 0, 0, 1) |
|
--mdui-motion-easing-standard-accelerate |
cubic-bezier(0.3, 0, 1, 1) |
|
--mdui-motion-easing-standard-decelerate |
cubic-bezier(0, 0, 0, 1) |
|
--mdui-motion-easing-emphasized |
var(--mdui-motion-easing-standard) |
|
--mdui-motion-easing-emphasized-accelerate |
cubic-bezier(0.3, 0, 0.8, 0.15) |
|
--mdui-motion-easing-emphasized-decelerate |
cubic-bezier(0.05, 0.7, 0.1, 1) |
|
| Durata | --mdui-motion-duration-short1 |
50ms |
--mdui-motion-duration-short2 |
100ms |
|
--mdui-motion-duration-short3 |
150ms |
|
--mdui-motion-duration-short4 |
200ms |
|
--mdui-motion-duration-medium1 |
250ms |
|
--mdui-motion-duration-medium2 |
300ms |
|
--mdui-motion-duration-medium3 |
350ms |
|
--mdui-motion-duration-medium4 |
400ms |
|
--mdui-motion-duration-long1 |
450ms |
|
--mdui-motion-duration-long2 |
500ms |
|
--mdui-motion-duration-long3 |
550ms |
|
--mdui-motion-duration-long4 |
600ms |
|
--mdui-motion-duration-extra-long1 |
700ms |
|
--mdui-motion-duration-extra-long2 |
800ms |
|
--mdui-motion-duration-extra-long3 |
900ms |
|
--mdui-motion-duration-extra-long4 |
1000ms |
Breakpoint
I componenti mdui adattano il loro layout in base a vari breakpoint, che vengono forniti tramite Proprietà CSS personalizzate. Ecco un esempio di come modificare un breakpoint:
/* Modifica il valore del breakpoint per sm */
:root {
--mdui-breakpoint-sm: 560px;
}
Tieni presente che le proprietà CSS personalizzate non possono essere utilizzate nelle media query CSS. Ad esempio, il seguente utilizzo non è corretto:
/* Utilizzo errato. Le proprietà CSS personalizzate non possono essere utilizzate nelle media query */
@media (min-width: var(--mdui-breakpoint-sm)) {
}
Per determinare i breakpoint in JavaScript, utilizza la funzione breakpoint.
| Proprietà CSS Personalizzata | Predefinito |
|---|---|
--mdui-breakpoint-xs |
0px |
--mdui-breakpoint-sm |
600px |
--mdui-breakpoint-md |
840px |
--mdui-breakpoint-lg |
1080px |
--mdui-breakpoint-xl |
1440px |
--mdui-breakpoint-xxl |
1920px |