Come si genera una tavolozza simile a quelle nella progettazione dei materiali di Google?


62

Le specifiche di progettazione dei materiali di Google hanno set di tavolozze di colori :

inserisci qui la descrizione dell'immagine

A partire da un colore primario di base, che designano come "500", hanno quindi una gamma di gradini incrementali di tonalità, più chiara e più scura, per creare una gamma di circa 10 colori. Il più chiaro è designato "50", ed è quasi bianco, e il più scuro, "900", è quasi nero, ma entrambi mantengono parte del colore di base.

Non riesco a determinare come vengono calcolati gli incrementi. Ho provato questo generatore di campioni online , ma non riesco a comporre il numero.

Penso che sia solo una questione di regolazione della luminosità su e giù dal colore "500" di base, e immagino che un valore di "0" sarebbe bianco puro e "1000" sarebbe nero puro, ma le gamme di Google le palette sembrano avere più saturazione di una semplice gamma di luminosità.

Qualcuno sa quale algoritmo o processo posso usare per prendere un colore di base e generare una tavolozza in linea con le tavolozze di Google?


Sembrano essere il colore di base con la saturazione e il valore rispettivamente aumentati o diminuiti inversamente quando il numero aumenta o diminuisce
Supuhstar

1
In realtà, facendo un passo indietro dallo schermo, sembra usare un algoritmo simile all'ombreggiatura del phong ... Dovrò considerare questo
Supuhstar

Hai trovato una soluzione per generare la tavolozza?
MrBrightside,

@MrBrightside Howdy! Puoi generare una tavolozza usando la risposta scelta, qui: mcg.mbitson.com - Tieni presente che i colori non sono esattamente gli stessi delle tavolozze di Material Design, anche se puoi importare le tavolozze esatte o generare rappresentazioni ravvicinate con colori personalizzati. Più sul perché non sono i colori esatti qui: stackoverflow.com/questions/32942503/...
Mikel Bitson

1
Il materiale è SOLO monocromatico per la gamma 50-500, vedi codepen.io/sebilasse/pen/GQYKJd?editors=1010 per i colori più scuri e accentati ...
sebilasse

Risposte:


41

Ho creato questo piccolo strumento CSS3 / AngularJS per un progetto per generare palette di colori materiali. Puoi inserire il tuo colore esadecimale 500 e utilizzare uno strumento esterno come ColorZilla per ottenere i valori di colore da lì. Anche quelli più chiari sono esattamente quelli usati da Google, ma quelli più scuri sono leggermente più spenti.

mcg.mbitson.com


Il generatore di palette funziona davvero bene e, per quanto posso vedere, si avvicina agli standard di Google Material Design. Una cosa: potresti voler creare più contrasto per il testo sulla pagina. Il testo nero su sfondo grigio scuro è molto difficile da leggere.
Interrogante

2
Hey ragazzi! Sono lo sviluppatore dietro la versione aggiornata dello strumento. Recentemente ho cambiato il modo in cui gestisco la generazione del colore. Se qualcuno ha un feedback diretto per questo strumento, è la tecnica di generazione del colore o qualsiasi funzionalità aggiuntiva che desidera, per favore fatemelo sapere! Sto ancora sviluppando miglioramenti nel mio tempo libero e temo che la generazione del colore possa essere disattivata, anche se ancora molto utile. Continuerò a esaminarlo.
Mikel Bitson,

1
@MikelBitson Il generatore di palette è davvero spento (basta inserire qualsiasi colore 500 dallo standard di progettazione del materiale e confrontarlo per vedere), tuttavia funziona alla grande con molti altri colori di base. Continuate così!
Chris Bornhoft,

1
@MikelBitson Fantastica spiegazione grazie. Ho pensato che fosse qualcosa del genere anche prima di pubblicare il mio commento originale. Mi chiedo quanto guadagna "Selezione colori ufficiale" di Google? Che titolo :)
Chris Bornhoft,

1
Link aggiornato per quelli di voi che cercano la nuova versione: mcg.mbitson.com/#
Mikel Bitson,

18

Le palette di Google sono monocromatiche . Ciò mantiene lo stesso rapporto RGB spostando la Luminosità e la saturazione verso l'alto o verso il basso. Per fare questo devi convertire il valore RGB in rappresentazione HSL (Tonalità, Saturazione, Luminosità), modificare la luminosità e la saturazione, quindi riconvertire se necessario. È possibile tenerlo nello spazio RGB durante il calcolo, ma la matematica è troppo confusa (per me capire o spiegare). HSL è stato creato per la miscelazione tradizionale dei colori (è più facile per noi pensarci).

Se il tuo obiettivo è creare palette CSS, puoi mantenere il colore in HSL usando background-color: hsl(0,100%, 50%);.

Puoi farlo manualmente in Photoshop usando il selettore colore. L'HSB è per la tonalità della saturazione della luminosità (sinonimo di HSL, stessa cosa). Scegli una tonalità che ti piace e modifica la saturazione e la luminosità di un valore coerente. Nell'immagine sotto S = 54 e B = 77, spostati verso l'alto del 5% usando 54 + 54 * 0.05e 77 + 77 * 0.05. O per spostarti verso il bassoS - S * 0.05

selettore di colori di Photoshop

Nota a margine per chiarire tra esadecimale e RGB. Il 6 cifre HEX # FFEB3B è in realtà 3 numeri separati, che rappresentano RGB.

#FFEB3B -> FF,EB,3B -> red:FF green:EB blue:3Bla conversione dei valori esadecimali in decimali ti dà red:255 green:235 blue:59 OR rgb(255,235,59).

Ci sono algoritmi per convertire RGB in HSL se li vuoi davvero su Wikipedia, ma il modo più semplice è usare una lib di colore. Questo esempio crea una tavolozza monocromatica con please.js e ha anche altri algoritmi per la creazione di tavolozze complementari o gradevoli. Proprio come kuler.adobe, che è anche rock.

Please.make_scheme(
    Please.HEX_to_HSV('#ffeb3b'),
    {scheme_type: 'mono', format:'hex'}
);
// returns ->["#ffeb3b", "#ffe821", "#ffe508", "#e5d54c"]

4
Le palette di Google non mostrano un gradiente di luminosità costante tra HSV / HSB. Ho creato un'illustrazione in modo che tu possa vedere di cosa sto parlando. Basandoti su questo, probabilmente staresti meglio giocando con uno degli altri modelli di colore. Inoltre, sembrano aver modificato leggermente la loro tonalità per le tonalità più scure di alcuni colori, per evitare che diventino fangose.
Tess,

Vorrei aggiungere un po 'qui che i secondi alla risposta di Tess .. Ho sviluppato la versione migliorata del generatore MCG e nel processo ho notato alcune cose. Ogni palette di Google segue una diversa progressione di colori, non è monocromatica. Non esiste una formula o un metodo per imitare esattamente i colori, poiché la formula per ogni tavolozza risulta completamente diversa. Maggiori dettagli e un esempio sono disponibili qui: github.com/mbitson/mcg/issues/19
Mikel Bitson,

@MikelBitson Ma in risposta alla domanda "quale algoritmo o processo posso usare" voterei per il monocromatico o una versione di esso en.wikipedia.org/wiki/Monochromatic_color Ma tu e Tess avete ragione non è strettamente mono, si discostano da la tonalità.
Lex,

1
@Lex - Sono d'accordo con te, userei il monocromatico per stimare una tavolozza. Ho solo distaccato la risposta di Tess perché la tua risposta afferma che "Le palette di Google sono monocromatiche". e recentemente ho trascorso molto tempo alle prese con questi colori. :)
Mikel Bitson,

1
HSB / HSV non è lo stesso di HSL en.wikipedia.org/wiki/HSL_and_HSV
Kevin Thibedeau

1

Hai provato a lavorare con la ruota dei colori di Adobe? Penso che sia un po 'più flessibile dello strumento SlayerOffice che stai utilizzando.

https://color.adobe.com/

Per il tuo caso esatto, scegli "Tonalità" e prova a scherzare da lì. Non genererà un design materiale come i campioni, ma è un inizio.


0

Potresti semplicemente scaricare le tavolozze a cui Google fornisce un link sul sito? Dal momento che ti dà tutti i colori?

Google Color Swatches Zip


12
Penso che OP volesse sapere come iniziare con il suo colore e generare un campione simile
Supuhstar

0

Per generare la sfumatura / tavolozza dei colori da un determinato colore, in sostanza è possibile utilizzare il seguente algoritmo.

  1. Decidi la tonalità minima e massima che desideri nella tua tavolozza
  2. Dividi 'spazio colore' tra questi colori in una partizione uguale (vedi sotto)
  3. Colori di output su questi passaggi

Per dividere lo spazio colore tra, per prima cosa puoi convertire il tuo esadecimale colore in RGB. Seleziona i valori in ciascun canale. Supponiamo che tu abbia color1 (r1, g1, b1) e color2 (r2, g2, b2). E vuoi 3 colori tra color1 e color2 , quindi puoi fare qualcosa come seguire

all_colors = []
steps = no_of_colors + 1
rdelta, gdelta, bdelta = (r2 - r1) / steps, (g2 - g1) / steps, (b2 - b1) / steps
for step in range(steps - 1):
    r1 += rdelta
        g1 += gdelta
        b1 += bdelta
all_colors.append((r1, g1, b1)) 

Ricorda di convertire i valori RGB tra (da 0 a 1).

Nel tuo caso, puoi prendere il colore di base e dividere lo spazio colore tra white to basecolore basecolor to black. Puoi adattare i tuoi passi in base alle tue necessità.

Infine, farò una promozione spudorata della libreria Python che ho creato, solo perché è rilevante per questa domanda riguardante la generazione di palette di colori. Si chiama SecretColors . È possibile generare palette di colori, sfumature o utilizzare palette di colori standard come IBM, Material Design, ColorBrewer o Clarity.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.