Opium.Fill - Standardisierung des Farbschemas mit den Augen des Programmierers

Blaues Gesicht, Pilze wachsen aus den Augen

Hallo. Heute zeige ich Ihnen das Farbschema, das ich seit 2 Jahren verwende. Es wurde erfunden, um eine große Anzahl von Variablen in CSS bei einem problematischen Projekt loszuwerden. Und dann stellte sich heraus, dass diese Prinzipien auf fast jedes Projekt angewendet werden können.

Im Allgemeinen werde ich versuchen zu erklären, wie Designer Farben in der Benutzeroberfläche verwenden und wie all dies „getippt“ werden kann, ohne Designer in enge Rahmen zu drängen. Ich werde Beispiele für die Implementierung in React JS (für den Entwickler) und in Figma (für den Designer) geben. Das Schema enthält keine Bindungen zu React und Figma. Ich bin nur mit ihnen besser vertraut.

Es gibt nichts Listiges und Einzigartiges im Schema (vielleicht nur einen Namen). Alle Ideen hängen in der Luft. Sie können es als meine beste Vorgehensweise für die Arbeit mit Farben in Anwendungen betrachten. Opium.Fill - das sind allgemeine Prinzipien, kombiniert mit der Liebe, alles zu benennen.

Das System kann in Verbindung mit Material Design verwendet werden.

Der Artikel ist für den Front-End-Entwickler und ein wenig für den Designer geschrieben.

Inhaltsverzeichnis


  1. Welche Probleme lösen wir?
  2. Ideologie Opium.Fill
  3. Grundannahmen
  4. Block Nr. 1. Übergeordnete Farben
  5. Block Nr. 2. Substitution
  6. Block Nr. 3. Schichten
  7. Farbinversion
  8. Verwenden von
  9. Wenn es keinen Sinn macht, es zu benutzen
  10. Kritik
  11. Fazit

Alle Bilder sind anklickbar

1. Welche Probleme lösen wir?


1.1. 50 Graustufen


Wahrscheinlich ist jeder mit diesem Problem vertraut. Meistens ist es auf Graustufen zu sehen, aber bei anderen Farben (z. B. Blau) passiert dies. Wo platzieren, wo verwenden? Sogar Designer sind darüber verwirrt.

1.2. Designer spielt mit Blumen


Manchmal kann ein Designer eine neue Farbe liefern, einfach weil die alte müde und unbeliebt ist (oder weil er eine Pipette verpasst hat). Daran ist nichts auszusetzen, Sie müssen dem Designer keine Schuld geben. Das Problem ist jedoch, dass der Entwickler die Änderungen nicht immer kennt.

In diesem Fall häufen sich viele Farbvariablen an. Schließlich versteht der Entwickler nicht, ob alte Farben entfernt werden müssen oder ob sie noch irgendwo verwendet werden. Von den Projekten, die ich gesehen habe, enthält der Datensatz 273 Nur-Farbe-Variablen.

Eine ähnliche Situation kann bei allen Projekten auftreten, bei denen an Agile gearbeitet wird und sich das Design gleichzeitig mit der Entwicklung ändert.

1.3. Nächtliche Themen und Branding-Design


Dieses Problem ist auf das vorherige zurückzuführen. Wenn das Projekt sehr viele ungeordnete Variablen aufweist, ist es schwierig, neue Farbschemata einzuführen.

Sie arbeiten beispielsweise an der Erstellung von CRM. Und Ihr CRM bietet dem Kunden die Möglichkeit, sein Farbschema an die Corporate Identity des Kunden anzupassen. Wenn Sie kein klares Farbschema haben, ist dies schwierig.

Aber was ist, wenn Sie ein dunkles Thema für die Anwendung benötigen? Dann führt der Satz „Vasily, nehmen wir unsere 273 Variablen und systematisieren sie“ dazu, dass Vasily das Formular beim 10. Schritt des Ausfüllens des Antrags gebrochen hat, sich mit dem Entwickler aus der benachbarten Abteilung gestritten hat und eine Woche später verrückt geworden ist.

2. Die Ideologie von Opium.Fill


2.1. Stören Sie den Designer nicht an der Arbeit


Opium.Fill wurde erfunden, um das Design zu „entschlüsseln“ und den Designer nicht zu laden. Der Designer muss nicht über die Existenz von Opium.Fill Bescheid wissen, um alles gemäß dem Schema zu tun.

Sie sollten dem Designer kein Farbschema auferlegen, und es ist besser zu warten, bis er mit dem Zeichnen des Hauptkonzepts der Anwendung fertig ist. Erst danach ist es sinnvoll, ihm zu zeigen, ob etwas nicht zum Farbschema passt, und zu klären, ob diese Stellen korrigiert werden können. Bei 9 von 10 solchen Fragen sagen Designer: "Pf, das ist kein Problem, ersetzen wir es" oder "Oh, und das ist im Allgemeinen meine Neigung, danke, dass Sie es bemerkt haben."

2.2. Definieren Sie Farben "per Auge"


Nach dem Periodensystem ist es möglich, die Existenz von noch nicht entdeckten Elementen vorherzusagen. Hierzu wurden leere Zellen vorab zugewiesen. Wir werden dieses Prinzip für unser Farbschema verwenden. Machen Sie eine Tabelle und lassen Sie einige der Zellen leer. Aber für den Rest der Parameter werden Sie selbst mit dem Auge verstehen, welche Farbe dort sein sollte.

Periodensystem


2.3. Lassen Sie sich nicht entmutigen, wenn sich nicht alles herausstellt


Unsere Aufgabe ist es, den größten Routineteil der Arbeit mit Farben zu optimieren. Wenn Sie bei der Entwicklung der Anwendung 1 Mal von 100 auf die Farbe hinweisen und auf etwas stoßen, das nicht in die Schaltung passt, wird dies nicht als Problem angesehen.

3. Grundannahmen


3.1. Zu jeder Farbe - ein Paar


Wir glauben, dass jede Farbe zwei „Inkarnationen“ hat. Der erste ist gesättigt (bedingt stark). Der zweite ist ungesättigt (bedingt schwach). Wenn wir blau sehen, müssen wir es nicht nur blau, sondern auch als stark oder schwach definieren. Ist es gesättigt oder ungesättigt?

3.2. Teilen Sie Farben durch Funktionalität


Vergessen Sie "Himmelblau", "Gold", "Tiefschwarz" und dergleichen in den Namen der Farben. Der Name der Farbe sollte ihre Funktionalität widerspiegeln, nicht ihr Hex. Jetzt arbeiten wir mit den folgenden Namen: Basis, Ohnmacht, Akzent, Komplement, Kritiker, Warnung, Erfolg.

3.3. Drei Blöcke


Block Nr. 1 ist der wichtigste. Block Nummer 3 ist am unwichtigsten. Im Folgenden werde ich jeden der Blöcke beschreiben. Diese Trennung ist notwendig, damit Farben, die für das Zeichnen der Benutzeroberfläche weniger wichtig sind, uns weniger ablenken.

4. Blocknummer 1. Übergeordnete Farben


4.1. Namen


Zurück zu unseren neuen Farbnamen. Basis, Ohnmacht, Akzent, Ergänzung, Kritik, Warnung, Erfolg. Nehmen wir es einzeln.

Base


Es ist schwarz und weiß. Oder jene Farben, die ihnen bis zu einem gewissen Grad ähnlich sind. Sie sind grundlegend für Text und Hintergrund.

Schwarz-Weiß-Farben


Ohnmacht


Also nennen wir Grautöne. Ein Hintergrundtext oder ein grauer Hintergrund ist schwach. Schwarz mit Transparenz (wenn es als grau wahrgenommen wird) ist hier ebenfalls enthalten.

Graue Farbe hinzugefügt


Akzent


Dies ist die Hauptfarbe des Unternehmens oder die Farbe, die die wichtigsten Elemente der Benutzeroberfläche hervorhebt. Wenn Sie sich zum Beispiel russische Banken ansehen, dann: Sberbank ist grün, VTB ist blau (oder rot, wie Sie sehen können), Tinkoff ist gelb, Alpha ist rot. Der Einfachheit halber beziehen wir uns auf Blautöne in unserer Tabelle unter Akzent.

Blaue Farbe hinzugefügt


Ergänzen


Dies ist eine optionale Akzentfarbe. Nicht jeder hat es. Schauen wir uns Airbnb an - ich würde sagen, dass es dunkelgrün ist: Für unsere Bequemlichkeit werde ich Complement in lila angeben, es wird uns in den Designbeispielen nützlich sein, die ich unten zeigen werde.

Lila hinzugefügt




Bildschirm Airbnb


Kritisch


Farbe zum Hervorheben von Fehlern und anderen äußerst wichtigen Informationen. Normalerweise etwas Rotes.

Rote Farbe hinzugefügt



Warnung


Wenn Sie wichtige Informationen mit anderen teilen möchten, die ebenfalls wichtig, aber nicht tödlich sind, ist eine Warnung erforderlich. Normalerweise ist dies eine Art Gelb-Orange.

Orange Farbe hinzugefügt


Erfolg


Manchmal reicht eine erfolgreiche Aktion aus, um den Farbakzent anzuzeigen. Wenn Accent jedoch eine ungewöhnliche Farbe (rot) hat oder Sie aus irgendeinem Grund eine neue Farbe einführen möchten, dann ist hier Erfolg. Höchstwahrscheinlich wird es sich als grünlich herausstellen. 7 Grundfarbnamen wurden veröffentlicht. Es ist nicht notwendig, alle zu verwenden. Und natürlich können Sie das Set ergänzen, wenn Sie einen ernsthaften Grund dafür haben.

Grün hinzugefügt




4.2. Farbfamilien


Sie haben wahrscheinlich bereits bemerkt, dass ich, wenn ich über Farbe spreche, keine bestimmte Bedeutung anzeige, sondern die Wörter "Graustufen", "etwas Rotes", "Grünliches" usw. verwende. Dies ist nicht einfach so. Lassen Sie uns das Konzept der „Farbfamilie“ vorstellen.

Wie ich oben sagte, teilen wir Farben paarweise. Nur Akzent kann nicht existieren. Stellen Sie sicher, dass der Akzent stark und der Akzent schwach ist. Dies sind immer genau die beiden Farben, die die Basis der Familie bilden. Wie Papa und Mama. Stellen wir uns für eine Weile vor, dass unsere Farben ein verheiratetes Paar sind. Angenommen, es spielt keine Rolle, welches Geschlecht die Eltern haben, die Hauptsache ist, dass einer stark (stark) und der zweite schwach (schwach) ist. Und wir werden auch akzeptieren, dass Stärke und Schwäche Charaktereigenschaften sind, wie schnelles Temperament und Ruhe.

Links stark, rechts schwach




Also. Papa ist hitzig. Er ist oft nervös im Stau und tritt Igel in den Wald. Mama ist ruhig. Sie arbeitet als Psychologin und spielt Poker. Dies ist die Basis unseres Farbschemas.

Grundfarben sind bereits geteilt (schwarz und weiß). Teilen Sie den Rest in Familien:

Alle Farben sind in 2 unterteilt. Eine ist gesättigt, die zweite ist kaum wahrnehmbar.


5. Block Nr. 2. Substitution


5.1. Kontext


Schauen Sie sich Bitbucket an. Dann war der Designer der Ansicht, dass die blaue Farbe, die sich hinten links befindet, für den Text etwas dunkel ist. Und so hat er es aufgehellt. Jetzt hat der gesamte Text, obwohl er blau aussieht (wie ein Seitenmenü), in hex tatsächlich eine andere Bedeutung: Jede Farbe hat einen Kontext, in dem sie verwendet wird. Hintergrund, Text, Linien und Symbole können mit Farbe versehen werden. Das nennen wir Kontext. In jedem dieser Fälle muss die Farbe möglicherweise irgendwie geändert werden, damit sie besser zum Kontext passt. Wir nennen diese Änderung Substitution . Wir wählen einen Platz in der Tabelle für Substitutionen aus. Jede neue Zeile ist ein Kontext, für den wir Substitutionen hinzufügen können. Standardmäßig sind leere Zellen vorhanden:

Bildschirm Bitbucket






Dieselbe Liste von Farben, zweigeteilt, aber zusätzliche Linien wurden hinzugefügt.  Wir werden es einen Tisch nennen.


Wir haben Substitutionszellen nur für starke Farben hinzugefügt. Die schwachen Farben in Block 2 zeigen, wie diese Farbe auf einem dunklen Hintergrund aussieht. Wir werden sie zwar nicht berühren, aber am Ende werden wir zu ihnen zurückkehren.

Wenn die Ersetzung nicht ausgefüllt ist, wird die Farbe für den Text, die Symbole und alles andere
aus Block Nr. 1 übernommen.
Hinweis. Wir können Farben nur in primitiven Designelementen ersetzen. Dieses Set stammt fast 1: 1 aus den von Designern verwendeten Grafikeditoren. Dort können Sie ein Rechteck (Hintergrund) zeichnen, einen Textblock hinzufügen, eine Linie zeichnen oder eine ungewöhnliche Form hinzufügen, z. B. ein Sternchen (lesen Sie das Symbol).

5.2. Schick


Es gibt eine andere spezielle Art der Substitution - die Substitution des Gradienten. Wir nennen Farbverläufe das Wort Phantasie - Kontext für einen "besonderen Anlass". Phantasie ist eins für alle. Es kann keinen separaten Farbverlauf für Text, Symbole usw. geben (theoretisch natürlich, aber es lohnt sich nicht, die Tabelle aufgrund eines so seltenen Falls schwieriger zu gestalten). Lassen Sie uns den Platz am Ende der Tabelle für Fancy hervorheben: Wir haben uns je nach Kontext auf die Änderungen vorbereitet, die Designer tun dies zu 100%. Leere Zellen geben uns Flexibilität. Manchmal müssen Substitutionen häufiger, manchmal weniger häufig durchgeführt werden. Wenn Block Nummer 2 fast leer bleibt, ist dies normal (der Designer versucht auch, die Anzahl der Farben zu reduzieren).

Eine weitere Zeile wurde zur Tabelle hinzugefügt




6. Blocknummer 3. Schichten


Manchmal muss die Farbe leicht abgedunkelt oder aufgehellt werden. Dies liegt jedoch nicht daran, dass sich der Kontext geändert hat, sondern lediglich daran, dass jede Farbe zwei zusätzliche Zustände aufweist: „dunkler“ und „heller“. Meistens verwenden Designer dies, um eine Mouseover-Reaktion durchzuführen. Wir nennen diesen Farbwechsel Shift. Sie können eine Verschiebung nach oben (dunkler) oder eine Verschiebung nach unten (heller) vornehmen. Ein leerer Tisch sieht jetzt so aus:

Oben ist eine dunkle Farbe.  Downlight




Tabelle, aber jetzt hat jede Farbe zusätzliche Zellen oben und unten


7. Farbinversion


Ich habe absichtlich nicht sofort darüber gesprochen, weil es selten ist und nicht jeder es braucht. Manchmal möchten Sie etwas auf ein dunkles Substrat schreiben, aber nicht alle Farben sind dafür angepasst. Schauen wir uns ein Beispiel für eines unserer Designs an: Auf einer blauen Platte befindet sich Text, der subjektiv als schwach wahrgenommen wird. Und unter den Symbolen befinden sich Kreise, die ich auch in der Familie Faint definieren würde.  Wenn der Würfel leicht wäre, wären diese beiden Elemente höchstwahrscheinlich nur grau. Aber der Würfel ist dunkel. Unsere Tabelle enthält keine passenden Farben. Sie können sie hinzufügen. Dafür benötigen Sie die schwache Spalte in Block Nr. 2. Für dieses Layout sieht die Tabelle folgendermaßen aus:

Design von Mobile-Banking-Anwendungen








In der Tabelle ist ein anderer Teil der Zellen gefüllt, der Großteil bleibt leer


Bitte beachten Sie, dass die Linien jetzt mit einem helleren Faint Strong gezeichnet werden. Dies spiegelt sich auch in der Tabelle wider. Außerdem wurden Farbverläufe für Akzent und Verschiebungen für übergeordnetes Ohnmächtiges hinzugefügt (sie sind nützlich, um ein Suchfeld zu zeichnen).
Hinweis. Keine Notwendigkeit, Inversion und Nachtthema zu verwechseln. Das Nachtthema hat viele seiner Farbnuancen. Es ist daher besser, eine separate Tabelle dafür zu erstellen.

8. Verwenden Sie


8.1. CSS, reagieren


Versuchen wir, eine solche Schaltfläche zu zeichnen. In reinem CSS können Variablen wie folgt organisiert werden:

Taste




:root {
  /*   */

  --base-strong: #000;
  --base-weak: #fff;

  --faint-strong: #8994A6;
  --faint-weak: #F6F8FB;

  --accent-strong: #0070FF;
  --accent-weak: #EBF4FF;

  --complement-strong: #8889E2;
  --complement-weak: #EEECFD;

  --critic-strong: #F74545;
  --critic-weak: #FDEDED;

  --warning-strong: #F8AE4F;
  --warning-weak: #FCEBCF;

  --success-strong: #27AE60;
  --success-weak: #DEF8E9;

  /* C   */
  --faint-strong-down: #A5ADBB;
  --faint-weak-up: #ECEEF5;
}

/*  */
/*      */

.back {
  --faint-weak: rgba(255, 255, 255, 0.15);
}

.text {
  --faint-weak: rgba(237, 241, 247, 0.5);
}

.line {
  --faint-strong: #EDEFF2;
}

.icon {}

.fancy {
  --accent-strong: linear-gradient(132deg, #3F89EE, #5447FF);

  /*  */
  --accent-strong-down: linear-gradient(132deg, #448FF3, #594CFF);
}


/*   */

.button {
  background: var(--accent-strong);
  color: var(--base-weak);
  /*    */
}

.button:hover {
  background: var(--accent-strong-down);
}

Um eine Schaltfläche in HTML zu erstellen, müssen Sie ein solches Markup hinzufügen:

<button class="fancy button">
  <div class="text">
    Hello Button
  </div>
</button>

In CSS gibt es keine Möglichkeit, einen Kontext nativ zu verfolgen, und dann müssen Sie ihn manuell über Klassen angeben. Sie können natürlich versuchen, den Kontext der verwendeten Tags zu verstehen, aber diese Entscheidung ist nicht jedermanns Sache.

Bei React könnte der Code folgendermaßen aussehen:

class Button extends React.Component {
  render() {
    return (
      <Box fill="accentStrong" fancy className="button">
        <Font fill="baseWeak">Hello Button</Font>
      </Box>
    )
  }
}

//   
class Button extends React.Component {
  render() {
    return (
      <Box.Accent fancy className="button">
        <Font>Hello Button</Font>
      </Box.Accent>
    )
  }
}

// Box  Font —    ,     

//        Strong  Weak (      )
//       
//      

//    ,   
// ,    
//     ,     Opium.Fill
//       

//   'button'     
//      

Um nicht an CSS gebunden zu sein (Sie erstellen nicht nur Anwendungen für den Browser), können Farbvariablen in json gespeichert werden:

{
  "color": {
    "parents": {
      "baseStrong": "#000",
      "baseWeak": "#fff",

      "faintStrong": {
        "default": "#8994A6",
        "shiftDown": "#A5ADBB"
      },
      "faintWeak": {
        "default": "#F6F8FB",
        "shiftUp": "#EDEFF2"
      },

      "accentStrong": "#0070FF",
      "accentWeak": "#EBF4FF",

      "complementStrong": "#8889E2",
      "complementWeak": "#EEECFD",

      "criticStrong": "#F74545",
      "criticWeak": "#FDEDED",

      "warningStrong": "#F8AE4F",
      "warningWeak": "#FCEBCF",

      "successStrong": "#27AE60",
      "successWeak": "#DEF8E9"
    },

    "context": {
      "back": {
        "faintWeak": "rgba(255, 255, 255, 0.15)"
      },

      "text": {
        "faintWeak": "rgba(237, 241, 247, 0.5)"
      },

      "line": {
        "faintStrong": "#EDEFF2"
      },

      "icon": {},

      "fancy": {
        "accentStrong": {
          "default": "linear-gradient(132deg, #3F89EE, #5447FF)",
          "shiftDown": "linear-gradient(132deg, #448FF3, #594CFF)"
        }
      }
    }
  }
}

8.2. Farbschema in Figma


Es scheint mir richtig zu sein, die Farben in Kontexte zu unterteilen, damit die Kontextnamen sichtbar sind. Und fügen Sie am Ende dieser Blöcke Verschiebungen hinzu. Wenn die Verschiebung wirklich nur für den Haver verwendet wird, sollten Sie sie nicht einmal zur Palette hinzufügen, damit Sie nicht erneut abgelenkt werden.

Figma Farbliste


9. Wenn es keinen Sinn macht, das System zu verwenden


9.1. Ungewöhnliches Designprojekt


Opium.Fill ist so konzipiert, dass die Grundfarben Schwarz und Weiß sind (oder solche, die ihnen subjektiv bis zur Verwirrung ähnlich sind). Wenn Sie viel Blau und Rot schreiben oder ständig verschiedene Farben in einer Oberfläche verwenden müssen, ist Opium.Fill nicht die beste Lösung.

9.2. Kleines Projekt


Für ein kleines Projekt ist es einfach nicht sinnvoll, ein System einzuführen. Es ist schneller, alle Zählerfarben in Variablen zu werfen, sobald sie verfügbar sind. Es ist jedoch besser, die vom Designer erhaltene Liste zu verwenden. Und manchmal ist alles so einfach, dass Sie Farben direkt in Stilen festlegen können, damit Sie nicht verwirrt werden.

9.3. Sie verwenden bereits etwas anderes


Wenn Ihr Team Material Design verwendet (und nicht nur) und jeder mit allem zufrieden ist, macht es keinen Sinn, zu ändern oder anzupassen, was funktioniert.

10. Kritik


Hier sind einige häufig geäußerte Probleme mit Opium.Fill. Ich werde versuchen, einige der Behauptungen zu beantworten. Sie können dies als offenes Thema betrachten. Wenn jemand auf Schwierigkeiten stößt, würde ich mich freuen, wenn Sie mit mir teilen.

10.1. Es gibt noch viele Variablen


Der neugierige Leser hat bereits berechnet, dass wir Zellen für 252 Variablen haben. Was ist besser als am Anfang?

Ich kann Ihnen versichern, dass all diese Farben niemals gleichzeitig verwendet werden. Es gibt einen Platz für sie, aber dies sind leere Zellen, wie unentdeckte Elemente im Periodensystem. Bei realen Projekten schaffen wir es, bis zu 30 Elemente zu „öffnen“.

Wenn sich mehr als 50 Teile in Ihrem Tisch ansammeln, läuft wahrscheinlich etwas schief und das Schema hilft leider nicht, das Problem zu beheben.

10.2. Um die Diagramme zu füllen, müssen Sie die Tabelle stark erweitern.


Wenn Sie viele Grafiken haben oder Produktkategorien in verschiedenen Farben einfärben müssen (und es beispielsweise 20 Stück gibt), müssen Sie neue Farbfamilien hinzufügen. Sieben Stücke, die ich oben beschrieben habe, reichen nicht aus.

10.3. Warum Substitutionen hinzufügen, wenn theoretisch alle Bedürfnisse durch Verschiebungen abgedeckt werden können?


Ich gehe von der Idee aus, dass kontextbezogene Substitutionen eine „übergeordnete“ Erklärung dafür sind, wie ein Designer Farben verwendet. So sind Substitutionen leichter zu verstehen und zu verwenden.

Schichten sind nützlich für seltene Blumen, es ist besser, sie in Fällen zu füllen:

  1. Ereignisbehandlung (z. B. Haver oder Click)
  2. Wenn Sie ein zusätzliches Spektrum an Graustufen benötigen

Fazit


Das Konzept erschien Anfang 2018 und hat sich seitdem nicht wesentlich geändert. In meiner Lieblingsorganisation haben wir Opium implementiert. Füllen Sie sowohl Design als auch Entwicklung aus. Manchmal war es notwendig, das von anderen Teams (von anderen Organisationen) erstellte Design zu implementieren, aber dies beeinträchtigte die Verwendung des Farbschemas nicht. Wir stießen auf Schwierigkeiten, konnten diese jedoch lösen. Einige Projekte sind bereits in Produktion gegangen.

Wenn das Thema Farbmanagement in einem Projekt in Ihrer Nähe liegt, kann es interessant sein, weitere Optionen zu lesen: Materialdesign , Atlassian Design

Danke


Wir haben uns ein Schema ausgedacht und einen Artikel geschrieben - Denis Elianovsky, JTC-Team.
Abbildung in der Kopfzeile - Elena Efimova

All Articles