Accedi a più colori e nuovi spazi

Questo documento fa parte della guida ai colori CSS ad alta definizione.

Il Colore CSS 4 delinea una serie di nuove e strumenti per CSS e colore. Il codepen riportato di seguito mostra tutte le nuove con le vecchie sintassi dei colori:

Leggi il riepilogo degli spazi colore classici.

La specifica di livello 4 ha introdotto 12 nuovi spazi colore per cercare i colori, rispetto alle 7 nuove gamut condivise in precedenza:

Scopri i nuovi spazi colore web

I seguenti spazi colore offrono accesso a gamut più grandi rispetto a sRGB. La lo spazio colore display-p3 offre quasi il doppio dei colori rispetto all'RGB, mentre Rec2020 offre quasi il doppio rispetto a display-p3. Sono moltissimi colori!

Cinque triangoli impilati di diversi colori per illustrare
  la relazione e le dimensioni di ciascuno dei nuovi spazi colore.

La funzione color()

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Il nuovo color() può essere utilizzata per qualsiasi spazio colore che specifica i colori con R, G e B canali. color() prende prima un parametro dello spazio colore, poi una serie di valori di canale per RGB e, facoltativamente, alcuni alpha.

Molti dei nuovi spazi colore usano questa funzione perché funzioni specializzate come rgb, srgb, hsl, hwb e così via stavano diventando una un lungo elenco, è più facile fare in modo che lo spazio colore sia un parametro.

Vantaggi

  • Uno spazio normalizzato per l'accesso agli spazi colore che utilizzano canali RGB.
  • Può scalare fino a qualsiasi spazio colore basato su RGB ad ampia gamma.

Svantaggi

  • Non funziona con HSL, HWB, LCH, okLCH o okLAB
di Gemini Advanced.
.valid-css-color-function-colors {
  --srgb: color(srgb 1 1 1);
  --srgb-linear: color(srgb-linear 100% 100% 100% / 50%);
  --display-p3: color(display-p3 1 1 1);
  --rec2020: color(rec2020 0 0 0);
  --a98-rgb: color(a98-rgb 1 1 1 / 25%);
  --prophoto: color(prophoto-rgb 0% 0% 0%);
  --xyz: color(xyz 1 1 1);
}

sRGB tramite color()

Il triangolo sRGB è l'unico completamente opaco per consentire di visualizzare la dimensione della gamma.

Questo spazio colore offre le stesse funzionalità di rgb(). Offre inoltre numeri decimali compresi tra 0 e 1, utilizzati esattamente come da 0% a 100%.

Vantaggi

  • Quasi tutti i display supportano l'intervallo di questo spazio colore.
  • l'assistenza per gli strumenti di progettazione.

Svantaggi

  • Non percettivamente lineare (come lch() è)
  • Nessun colore ad ampia gamma di colori.
  • I gradienti passano spesso attraverso una zona morta.
.valid-css-srgb-colors {
  --percents: color(srgb 34% 58% 73%);
  --decimals: color(srgb .34 .58 .73);

  --percents-with-opacity: color(srgb 34% 58% 73% / 50%);
  --decimals-with-opacity: color(srgb .34 .58 .73 / .5);

  /* empty */
  --empty-channels-black: color(srgb none none none);
  --empty-channels-black2: color(srgb);
}

SRGB lineare tramite color() {#linear-sIniziativa}

Il triangolo sRGB è l'unico completamente opaco per consentire di visualizzare la dimensione della gamma.

Questa alternativa lineare all'RGB offre un'intensità del canale prevedibile.

Vantaggi

  • Accesso diretto ai canali RGB, utile per motori di gioco o spettacoli di luci.

Svantaggi

  • Non percettivamente lineare.
  • Bianco e nero ci sono sui bordi.
.valid-css-srgb-linear-colors {
  --percents: color(srgb-linear 34% 58% 73%);
  --decimals: color(srgb-linear .34 .58 .73);

  --percents-with-opacity: color(srgb-linear 34% 58% 73% / 50%);
  --decimals-with-opacity: color(srgb-linear .34 .58 .73 / .5);

  /* empty */
  --empty-channels-black: color(srgb-linear none none none);
  --empty-channels-black2: color(srgb-linear);
}

I gradienti vengono discussi in dettaglio più avanti. ma rapidamente è importante vedere in bianco e nero srgb e linear-srgb gradiente per illustrarne le differenze:

Due gradienti orizzontali mostrati in due righe per un facile confronto. Il gradiente sRGB è uniforme, come abbiamo visto da molti anni. Tuttavia, il gradiente lineare sRGB è molto scuro nel primo 5% e molto chiaro nell'ultimo 10%, rendendo il grigio centrale molto chiaro per molto tempo.

LCH

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

LCH introduce la sintassi per accedere ai colori al di fuori della gamma RGB. È inoltre la prima a semplificare la creazione di spazi fuori gamma colore per un display. Il motivo è che tutti i colori degli spazi CIE (lch, oklch, lab, oklab) può rappresentare tutto lo spettro di colori visibile dall'uomo.

Questo spazio colore si basa sulla visione umana e offre per specificare uno qualsiasi di questi colori e altri ancora. I canali LCH sono la leggerezza, crominanza e tonalità. La tonalità è un angolo, ad esempio in HSL e HWB. La leggerezza è un valore tra 0 e 100. È una caratteristica speciale "percettivamente lineare", incentrato sulla persona leggerezza. La crominanza è simile alla saturazione; può variare da 0 a 230, ma è tecnicamente illimitato.

Vantaggi

  • Manipolazione del colore prevedibile grazie a una forma percettivamente lineare, per lo più (vedi oklch).
  • Usa canali già noti.
  • Spesso presenta gradienti vivaci.

Svantaggi

  • È facile uscire dalla gamma.
  • In rare occasioni, potrebbe essere necessario regolare il punto centrale del gradiente per evitare la variazione della tonalità.
di Gemini Advanced.
.valid-css-lch-colors {
  --percent-and-degrees: lch(58% 32 241deg);
  --just-the-degrees: lch(58 32 241deg);
  --minimal: lch(58 32 241);

  --percent-opacity: lch(58% 32 241 / 50%);
  --decimal-opacity: lch(58% 32 241 / .5);

  /* chromaless and hueless */
  --empty-channels-white: lch(100 none none);
  --empty-channels-black: lch(none none none);
}

LAB

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Un altro spazio colore creato per accedere alla gamma CIE, sempre con una la dimensione della leggerezza lineare (L). In LAB, A e B rappresentano gli assi unici visione artificiale a colori: rosso-verde e blu-giallo. Quando A viene assegnato un valore positivo aggiunge il rosso e aggiunge il verde quando è inferiore a 0. Quando a B viene dato un numero positivo aggiunge il giallo, dove i valori negativi sono verso il blu.

Vantaggi

  • Gradienti percettamente coerenti.
  • High Dynamic Range.

Svantaggi

  • Possibile variazione di tonalità.
  • È difficile stabilire se stabilire o indovinare il colore durante la lettura dei valori.
.valid-css-lab-colors {
  --percent-and-degrees: lab(58% -16 -30);
  --minimal: lab(58 -16 -30);

  --percent-opacity: lab(58% -16 -30 / 50%);
  --decimal-opacity: lab(58% -16 -30 / .5);

  /* chromaless and hueless */
  --empty-channels-white: lab(100 none none);
  --empty-channels-black: lab(none none none);
}

OKLCH

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.4.

Origine

Questo spazio colore è correttore per LCH. E come LCH, (L) continua a rappresentare la leggerezza percettivamente lineare, C per la crominanza e la H per la tonalità.

Questo spazio ti sembra familiare se hai lavorato con HSL o LCH. Scegli un'angolazione sulla ruota dei colori per H, scegli una luminosità o quantità di oscurità regolando L, ma poi abbiamo la crominanza anziché la saturazione. Sono abbastanza identici, tranne per il fatto che le regolazioni della leggerezza e della crominanza tendono a sono disponibili in coppia, altrimenti può essere facile chiedere colori ad alta crominanza al di fuori di una gamma target.

Vantaggi

  • Nessuna sorpresa quando si lavora con le tonalità blu e viola.
  • Leggerezza percettivamente lineare.
  • Usa canali già noti.
  • High Dynamic Range.
  • Ha un moderno selettore di colori di Evil Martians.

Svantaggi

  • È facile uscire dalla gamma.
  • Nuovi e relativamente inesplorati.
  • Pochi selettori colori.
.valid-css-oklch-colors {
  --percent-and-degrees: oklch(64% .1 233deg);
  --just-the-degrees: oklch(64 .1 233deg);
  --minimal: oklch(64 .1 233);

  --percent-opacity: oklch(64% .1 233 / 50%);
  --decimal-opacity: oklch(64% .1 233 / .5);

  /* chromaless and hueless */
  --empty-channels-white: oklch(100 none none);
  --empty-channels-black: oklch(none none none);
}

OKLAB

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.4.

Origine

Questo spazio è correttivo per il lab. Viene rivendicato come spazio ottimizzato anche per la qualità di elaborazione delle immagini, che per in CSS indica la qualità di manipolazione dei gradienti e delle funzioni colore.

Vantaggi

  • Spazio predefinito per animazioni e interpolazioni.
  • Leggerezza percettivamente lineare.
  • Nessuna variazione di tonalità come quella dei lab.
  • Gradienti percettamente coerenti.

Svantaggi

  • Nuovi e relativamente inesplorati.
  • Pochi selettori colori.
.valid-css-oklab-colors {
  --percent-and-degrees: oklab(64% -.1 -.1);
  --minimal: oklab(64 -.1 -.1);

  --percent-opacity: oklab(64% -.1 -.1 / 50%);
  --decimal-opacity: oklab(64% -.1 -.1 / .5);

  /* chromaless and hueless */
  --empty-channels-white: oklab(100 none none);
  --empty-channels-black: oklab(none none none);
}

Display P3

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Il triangolo P3 del display è l'unico completamente opaco,
  visualizzare la dimensione della gamma. Sembra la seconda rispetto alla più piccola.

La gamma di colori e lo spazio colore P3 del display sono diventati popolari da quando Apple supportava dal 2015 sul loro iMac. Apple supporta inoltre display-p3 nelle pagine web tramite CSS dal 2016, cinque anni avanti rispetto a qualsiasi altro browser. Se il colore proviene da sRGB, è un ottimo colore dello spazio per iniziare a lavorare man mano che sposti gli stili in un intervallo dinamico più alto.

Vantaggi

  • Ottimo supporto, considerato la base per i display HDR.
  • 50% di colori in più rispetto a sRGB.
  • DevTools offre un ottimo selettore colori.

Svantaggi

  • Alla fine verrà superata dagli spazi Rec2020 e CIE.
.valid-css-display-p3-colors {
  --percents: color(display-p3 34% 58% 73%);
  --decimals: color(display-p3 .34 .58 .73);

  --percent-opacity: color(display-p3 34% 58% 73% / 50%);
  --decimal-opacity: color(display-p3 .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(display-p3 none none none);
  --empty-channels-black2: color(display-p3);
}

Rec2020

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Il triangolo Rec2020 è l'unico completamente opaco,
  visualizzare la dimensione della gamma. È il secondo tra quello più grande.

Rec2020 fa parte del passaggio alla UHDTV (televisore ultra alta definizione), che offre un'ampia gamma di colori per l'uso nei contenuti multimediali 4K e 8K. Rec2020 è un altro Gamma basata su RGB, più grande di display-p3, ma non così comune tra i consumatori come Display P3.

Vantaggi

  • Colori Ultra HD.

Svantaggi

  • Non è ancora così comune tra i consumatori.
  • Non si trovano comunemente su dispositivi portatili o tablet.
.valid-css-rec2020-colors {
  --percents: color(rec2020 34% 58% 73%);
  --decimals: color(rec2020 .34 .58 .73);

  --percent-opacity: color(rec2020 34% 58% 73% / 50%);
  --decimal-opacity: color(rec2020 .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(rec2020 none none none);
  --empty-channels-black2: color(rec2020);
}

A98 RGB {#a98-barba}

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Il triangolo A98 è l'unico completamente opaco,
  visualizzare la dimensione della gamma. Sembra il triangolo delle medie.

Abbreviazione di Adobe 1998 RGB, A98 RGB è stato creato da Adobe per presentare la maggior parte delle colori ottenibili con le stampanti CMYK. Offre più colori rispetto allo sRGB, in particolare nelle tonalità del ciano e del verde.

Vantaggi

  • Spazi colore più grandi degli spazi colore sRGB e Display P3.

Svantaggi

  • Non è uno spazio comune all'interno dei progettisti digitali.
  • Non molte persone portano le tavolozze da CMYK.
.valid-css-a98-rgb-colors {
  --percents: color(a98-rgb 34% 58% 73%);
  --decimals: color(a98-rgb .34 .58 .73);

  --percent-opacity: color(a98-rgb 34% 58% 73% / 50%);
  --decimal-opacity: color(a98-rgb .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(a98-rgb none none none);
  --empty-channels-black2: color(a98-rgb);
}

ProFoto RGB

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Il triangolo di ProPhoto è l'unico completamente opaco,
  visualizzare la dimensione della gamma. Sembra la più grande.

Creato da Kodak, questo ampio gamut offre una gamma ultralarga di Colori e caratteristiche con variazioni di tonalità minime quando cambi la leggerezza. dichiara inoltre di coprire il 100% del colori delle superfici reali documentato da Michael Pointer nel 1980.

Vantaggi

  • La tonalità minima cambia quando si cambia la leggerezza.
  • Colori primari vivaci.

Svantaggi

  • Circa il 13% dei colori offerti sono immaginari, ovvero non rientrano nello spettro visibile umano.
.valid-css-prophoto-rgb-colors {
  --percents: color(prophoto-rgb 34% 58% 73%);
  --decimals: color(prophoto-rgb .34 .58 .73);

  --percent-opacity: color(prophoto-rgb 34% 58% 73% / 50%);
  --decimal-opacity: color(prophoto-rgb .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(prophoto-rgb none none none);
  --empty-channels-black2: color(prophoto-rgb);
}

XYZ, XYZ-d50, XYZ-d65

Supporto dei browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Origine

Lo spazio colore CIE XYZ comprende tutti i colori visibili a una persona con vista media. Questo è il motivo per cui è utilizzato come riferimento standard per altri colori spazi di archiviazione. Y è la luminanza, X e Z sono possibili cromi all'interno di un valore di Y specificato illuminazione.

La differenza tra d50 e d65 è il punto bianco, dove d50 utilizza la d50 i punti bianchi e d65 usa il punto di bianco d65.

Termine chiave: il punto bianco è un attributo di uno spazio colore, rappresenta il punto in cui il bianco reale esiste nello spazio. Per gli schermi elettronici, D65 è il modello punto bianco comune ed è l'abbreviazione di 6500 Kelvin. Sono importanti a colori conversione della corrispondenza dei punti bianchi in modo che la temperatura di colore (caldo o freddo) non ne sono interessati.

Vantaggi

  • L'accesso a luce lineare offre pratici casi d'uso.
  • È l'ideale per mescolare fisicamente i colori.

Svantaggi

  • Non percettivamente lineari come lch, oklch, lab e oklab.
.valid-css-xyz-colors {
  --percents: color(xyz 22% 26% 53%);
  --decimals: color(xyz .22 .26 .53);

  --percent-opacity: color(xyz .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz none none none);
  --empty-channels-black2: color(xyz);
}
.valid-css-xyz-d50-colors {
  --percents: color(xyz-d50 22% 26% 53%);
  --decimals: color(xyz-d50 .22 .26 .53);

  --percent-opacity: color(xyz-d50 .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz-d50 .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz-d50 none none none);
  --empty-channels-black2: color(xyz-d50);
}
.valid-css-xyz-d65-colors {
  --percents: color(xyz-d65 22% 26% 53%);
  --decimals: color(xyz-d65 .22 .26 .53);

  --percent-opacity: color(xyz-d65 .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz-d65 .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz-d65 none none none);
  --empty-channels-black2: color(xyz-d65);
}

Spazi colore personalizzati

Anche la specifica CSS Color 5 ha un percorso per insegnare al browser uno spazio colore personalizzato. Si tratta di un profilo ICC che indica al browser come per risolvere i colori.

@color-profile --foo {
  src: url(path/to/custom.icc);
}

Una volta caricato, accedi ai colori da questo profilo personalizzato con la funzione color() e specificare i relativi valori di canale.

.valid-css-color-from-a-custom-profile {
  background: color(--foo 1 0 0);
}

Interpolazione colore

Il passaggio da un colore all'altro avviene in animazioni, gradienti e miscelazione dei colori. Questa transizione viene in genere specificata come colore iniziale e colore finale, in cui il browser dovrebbe interporsi tra loro. L'interpolazione in questo caso significa generare una serie di colori intermedi per creare una transizione fluida anziché istantanea.

Con un gradiente, l'interpolazione è una serie di colori lungo una forma. Con l'animazione mostra una serie di colori che col tempo.

@keyframes bg {
  0%, 100% {
    background: orange;
  }
  25% {
    background: magenta;
  }
  50% {
    background: lime;
  }
  75% {
    background: cyan;
  }
}

.circle {
  animation: bg 5s ease-in-out infinite;
}

Con un gradiente, i colori intermedi vengono mostrati contemporaneamente:

Novità dell'interpolazione a colori

Con l'aggiunta di nuove gamut e spazi colore, ci sono nuovi opzioni per l'interpolazione. Transizione di un colore in hsl da blu a bianco si traduce in qualcosa di molto diverso da sRGB.

.classic-gradient-in-srgb {
  background: linear-gradient(to right, blue, white);
}

.new-gradient-in-hsl {
  background: linear-gradient(in hsl to right, blue, white);
}

Quindi cosa succede se passi da un colore in uno spazio a uno in uno completamente diverso:

.gradient {
  /* oklab will be the common space */
  background: linear-gradient(to right, lch(29.6 131 301), hsl(330 100% 50%));
}

.lch {
  /* lch is specified */
  background: linear-gradient(in lch to right, lch(29.6 131 301), hsl(330 100% 50%));
}

Per tua fortuna, il Colore 4 contiene istruzioni per i browser su come gestire questi le interpolazioni dello spazio colore. Per .gradient, i browser notano la differenziazione spazi colore e utilizza lo spazio colore predefinito oklab.

Si potrebbe pensare che il browser utilizzerebbe lch come spazio colore, poiché si tratta il primo colore, ma non è così. Ecco perché mostro un secondo gradiente di confronto .lch. Il gradiente .lch è un gradiente dello spazio colore lch.

Minore strisce grazie al colore a 16 bit

Prima che questi colori funzionino, tutti i colori venivano salvati in un numero intero a 32 bit in rappresentano tutti e quattro i canali; rosso, verde, blu e alfa. Questo è il valore di 8 bit per canale e 2^ 24 colori possibili (ignorando alfa). 2 ^ 24 = 16.777.216, "milioni di colori".

Terminata la creazione di questo colore, con quattro valori in virgola mobile a 16 bit, ogni canale viene il suo galleggiante, invece di essere accorpato tra loro. ovvero 64 bit di dati totali, producendo molti più di milioni di colori.

Questa operazione è necessaria per supportare il colore HD. Ciò aumenta la quantità di colore informazioni che possono essere archiviate, il che ha un buon effetto collaterale perché più colori da usare in un gradiente per il browser.

La banda sfumata si verifica quando i colori non sono sufficienti per creare una sfumatura uniforme e "strisce" di colore diventano visibili. Il banding è notevolmente mitigato con eseguire l'upgrade a colori a risoluzione più alta.

Vengono mostrati sei riquadri, ciascuno con una diversa quantità di bande di gradiente
    e qualche informazione sulla compressione e la profondità di bit.
. Fonte dell'immagine

Controlla l'interpolazione

La distanza più breve tra due punti è sempre una linea retta. Con colore l'interpolazione, i browser adottano il percorso breve per impostazione predefinita. Pensa a uno scenario dove sono presenti due punti in un cilindro colorato HSL. Un gradiente acquisisce la sua passi di colore viaggiando lungo la linea tra i due punti.

linear-gradient(to right, #94e99c, #e06242)
Una sfumatura circolare con una linea retta dal verde al rosso
    nel cerchio, passando per le aree bianche.
(dimostrazione fittizia)
Vista dall'alto verso il basso di un cilindro HSL con una linea tra le fermate di colore

La linea di gradiente riportata sopra va dritta tra il colore verdastra e il rossiccio colore, passando per il centro dello spazio colore. Anche se quanto sopra è ottimo, per aiutare la comprensione iniziale, non è esattamente ciò che accade. Ecco il gradiente nel seguente codepen; chiaramente non è bianco al centro, ha mostrato la dimostrazione fittizia.

L'area centrale del gradiente ha però perso la sua vibrazione. Questo perché i colori più vivaci sono al bordo della forma dello spazio colore, non centrale in cui si avvicinava l'interpolazione. Questo è comunemente definito come la "zona morta". Là esistono alcuni modi per risolvere questo problema o per aggirare questo problema.

Specificare più tappe del gradiente per evitare la zona morta

Una tecnica per evitare la zona morta oggi consiste nell'aggiungere ulteriori stop di colore a il gradiente che guida intenzionalmente l'interpolazione per rimanere all'interno vivaci intervalli di uno spazio colore. È letteralmente una soluzione, poiché altre fermate lo aiutano a superare la zona morta.

È disponibile uno strumento gradiente creato da Erik Kennedy che calcola i colori aggiuntivi. si ferma al posto tuo, per aiutarti a evitare la zona morta anche negli spazi colore che tendono a gravita su di esso. Utilizzo dello stesso codice, trasmettendo gli stessi colori del primo esempio ma cambiando l'interpolazione del colore in HSL, si produce questo:

linear-gradient(90deg, #94e99c, #99e789, #ace67d, #c4e472, #e2e366, #e2bf5a, #e1934e, #e06242);
Un gradiente circolare con una linea che si curva al centro con molte
    il gradiente lungo il percorso, allontanandolo dal centro.
(dimostrazione fittizia)
Vista dall'alto verso il basso di un cilindro HSL con una linea curva con 9 stop di colore

Con i punti di interruzione guidata, l'interpolazione non è più una linea retta, ma curva intorno alla zona morta, contribuendo a mantenere la saturazione, con conseguente un gradiente molto più vivace.

Sebbene lo strumento funzioni un ottimo lavoro, cosa accadrebbe se potessi ottenere risultati simili o direttamente dal CSS?

Direzione dell'interpolazione dei colori

Nel colore 4, la possibilità di controllare la strategia di interpolazione delle tonalità. ed è un nuovo modo per evitare (:wink:) la zona morta. Pensa a una tonalità angolo e considera un gradiente di 2 stop che cambia solo l'angolo, passando al colore passando da 140deg a 240deg, ad esempio.

Interpolazione tonalità più corta o più lunga

Per impostazione predefinita il gradiente prende il shorter può farcela, a meno che che hai specificato affinché prenda longer percorso. Tonalità Le opzioni di interpolazione indirizzano la rotazione angolare, ad esempio dicendo a qualcuno di girare a sinistra anziché a destra (heh, Zoolander):

Lo stesso cerchio gradiente di prima, ma questa volta c'è
  cerchio interno disegnato che mostra la strada lunga e quella breve.

Nell'esempio delle distanze di interpolazione tonalità, il percorso breve e il percorso lungo viene simulato per illustrare la differenza. La breve distanza ha in meno tonalità perché viene percorsa per una distanza minima possibile, in cui la lunga distanza ha percorso più tonalità.

Interpolazione delle tonalità crescente o decrescente

In Colore 4 sono disponibili altre due strategie di interpolazione delle tonalità, ma queste sono esclusive per i modelli cilindrici spazi colore. Restando con i due colori degli esempi precedenti, l'immagine ora mostra come funziona l'aumento e la diminuzione.

Il codepen riportato sopra ha utilizzato ColorJS per dimostrare il risultato previsto. Il CSS che scriveresti per ottenere lo stesso effetto senza un La libreria JavaScript sarebbe:

.longer-hue-interpolation-in-css {
  background: linear-gradient(
    to right in hsl longer hue,
    hsl(180deg 100% 75%),
    hsl(240deg 100% 75%)
  );
}

.decreasing-hue-interpolation-in-css {
  background: linear-gradient(
    to right in hsl decreasing hue,
    hsl(180deg 100% 75%),
    hsl(240deg 100% 75%)
  );
}

Per chiudere l'interpolazione delle tonalità, ecco un divertente parco giochi in cui puoi modificare la tonalità tra 2 interruzioni di colore e osserva gli effetti di una scelta di interpolazione tonalità e come gli spazi colore cambiano i risultati dei gradienti. Gli effetti possono essere molto different; considera questi quattro nuovi trucchi nella tua cintura degli strumenti colorata.

Gradienti in spazi colore diversi

Ogni spazio colore, data la sua forma e disposizione cromatica uniche, genera un un gradiente diverso. Nei seguenti esempi, osserviamo come ogni spazio colore li gestisce in modo diverso, soprattutto in blu o bianco. Nota quanti diventano viola al centro; una variazione di tonalità durante l'interpolazione.

Alcuni gradienti in questi spazi sono più vivaci di altri o viaggiano meno attraverso zone morte. Gli spazi come lab racchiudono i colori in modo da ottimizzare la saturazione, al contrario di spazi ottimizzati per consentire agli esseri umani di scrivere i colori in hwb().

.hwb {
  background: linear-gradient(to right, hwb(250 10% 10%), hwb(150 10% 10%));
}
.lab {
  background: linear-gradient(to right, lab(30 59.4 -96), lab(80 -64 36.2));
}

La demo precedente, sebbene discreta nei risultati, mostra risultati più coerenti dell'interpolazione con un lab. La sintassi del lab però non è semplice da leggere, numeri negativi che non sono familiari quando provengono da rgb o hsl. Buono possiamo usare hwb per una sintassi familiare, ma chiedere che il gradiente sia sono interpolati interamente all'interno di un altro spazio colore, come oklab.

.hwb {
  background: linear-gradient(in hwb to right, hwb(250 10% 10%), hwb(150 10% 10%));
}
.lab {
  background: linear-gradient(in oklab to right, hwb(250 10% 10%), hwb(150 10% 10%));
}

In questo esempio vengono utilizzati gli stessi colori in hwb ma specifica lo spazio colore per l'interpolazione in hwb o oklab. hwb è un ottimo spazio colore per vibrazione ma possibili zone morte o punti luminosi (si veda l'hot spot ciano nella esempio in alto). oklab è ottimo per i gradienti percettivamente lineari che rimangono satura. Si tratta di una funzione molto divertente, perché puoi provarla gli spazi per vedere il gradiente che preferisci.

Ecco un Codepen che sperimenta con sfumature e spazi colore, combinando strategie di corrispondenza per esplorare le possibilità. Anche una transizione dal nero al bianco è diversa in ogni spazio colore.

Blocco di Gamut

Esistono scenari in cui un colore potrebbe richiedere qualcosa al di fuori di una gamma di colori. Considera il seguente colore:

rgb(300 255 255)

Il massimo per un canale colore nello spazio colore rgb è 255, ma qui 300 è stato specificato per il rosso. Che cosa succede? Blocco di Gamut.

Il blocco si verifica quando le informazioni aggiuntive vengono semplicemente rimosse. 300 diventa 255 al motore a colori. Il colore è stato bloccato all'interno del suo spazio.

Scelta di uno spazio colore

Molte persone, dopo aver imparato a conoscere questi spazi cromatici e i loro effetti, si sentono sopraffatte e vuole sapere quale per scegliere. Dai miei studi e non vedo uno spazio colore come unico per tutte le mie attività. Ciascuna hanno momenti in cui producono il risultato desiderato.

Se ci fosse uno spazio migliore, non ci sarebbero così tanti nuovi spazi sono state introdotte.

Tuttavia, posso dire che gli spazi CIE (lab, oklab, lch e oklch) sono i miei punti di partenza. Se il risultato non è quello che cerco, testare altri spazi. Per mescolare i colori e creare sfumature, accetto scelta delle specifiche predefinita di oklab. Per i sistemi di colore e i colori generali dell'interfaccia utente, oklch.

Ecco un paio di articoli in cui gli utenti hanno condiviso il loro colore aggiornato strategie sulla base di questi nuovi spazi colore e funzionalità. Ad esempio, Andrey Sitnik ha dato il meglio di sé su oklch, forse ti convincono a fare lo stesso:

  1. OKLCH in CSS: perché siamo passati da RGB e HSL Andrea Rossi
  2. Formati di colore di Josh W. Comeau
  3. Ok, OKLCH di Chris Coyier

Passaggi successivi

Ora che hai familiarità con i nuovi spazi colore e strumenti, puoi eseguire la migrazione al colore HD.

Una maggiore vivacità, manipolazioni e interpolazioni coerenti e nel complesso assicurano una un'esperienza più vivace per gli utenti.

Leggi altre risorse per i colori dalla guida.