Blockfarbe

In den meisten Blockly-Apps werden die Blöcke in verschiedenen Farben verwendet, um die Blöcke visuell in Kategorien zu gruppieren. Die mit Blockly gelieferten Blöcke enthalten mehrere Kategorien, wobei die Farben von den verschiedenen Symbolleistenkategorien in den Demos gespiegelt werden:

Screenshot eines Arbeitsbereichs mit einem Beispiel für jede Blockfarbe

Die zusätzlichen Farben auf dem Block leiten sich aus der Hauptfarbe ab. Schattenblöcke sind beispielsweise eine entsättigte Version der Hauptfarbe und Rahmenfarben eine dunklere Version.

Blockfarbe festlegen

Die Blockfarbe kann in JSON- oder in JavaScript-Notation definiert werden:

JSON

{
  // ...,
  "colour": 160,
}

JavaScript

init: function() {
  // ...
  this.setColour(160);
}

Beachten Sie die britische Schreibweise. Wird keine Farbe festgelegt, erscheint ein schwarzer Block.

Farbformate

Der Wert colour kann im HSV- oder Hex-Format angegeben werden.

Farbton-Sättigungswert

Die einfachste Möglichkeit, die Farbe eines Blocks zu definieren, ist eine Zahl zwischen 0 und 360. Dabei wird der Farbton des Blocks im Farbmodell hue-saturation-value (HSV) definiert.

HSV-Farbspektrum

Wenn Sie HSV verwenden, bei dem die Sättigung und der Wert für alle Blockfarben festgelegt sind, können Sie eine Blockfarbe auswählen und gleichzeitig dafür sorgen, dass alle Blöcke eine zusammenhängende Palette haben.

Die Sättigung und die Werte können durch Aufrufen der folgenden Funktionen für jede Anwendung angepasst werden:

Blockly.utils.colour.setHsvSaturation(0.45) // 0 (inclusive) to 1 (exclusive), defaulting to 0.45
Blockly.utils.colour.setHsvValue(0.65) // 0 (inclusive) to 1 (exclusive), defaulting to 0.65

Der HSV-Farbraum kann mithilfe mehrerer Farbauswahlen festgelegt werden, z. B. mit der HSV-Auswahl. Geben Sie die Sättigungs- und Wertkonstanten von Blockly ein (die Standardwerte sind 45% bzw. 65 %) und ziehen Sie dann den Farbton in eine ausgewählte Farbe. Verwenden Sie diese Farbtonnummer als colour-Wert.

Hexadezimal

Die Verwendung des HSV-Farbraums wird dringend empfohlen, aber Blockly unterstützt Blockfarben, die als #RRGGBB-Hexadezimalwerte angegeben werden. Dies kann zwar die Koordination mit anderen Anwendungsfarben (z.B. Stilen in CSS) und Designanwendungen (z.B. Photoshop). Dies ist ein Designrisiko, das bei nicht sorgfältiger Auswahl zu unkoordinierten Blöcken führen kann.

Ein Beispiel für schlecht ausgewählte Farben.

Sofern Sie keine speziellen visuellen Designressourcen haben, wird empfohlen, im Rahmen des HSV-Farbraums zu arbeiten. Wenn Sie alle Farben auf diese Weise neu definieren möchten, sollten Sie sich die Material Design-Ressourcen von Google zu Farben ansehen.

Farbreferenzen

Oft haben mehrere Blöcke die gleiche Farbe. Durch die zentrale Farbdefinition wird die Verwaltung der Farben und das Hinzufügen neuer Blöcke der richtigen Farbe vereinfacht. Bei Blockfarben können Sie auf Stringtabellenreferenzen zurückgreifen.

Blockly fügt in die String-Tabelle neun Farbkonstanten ein, die den Toolbox-Kategorien entsprechen, sowie eine eindeutige Farbe für dynamische Variablen:

'%{BKY_LOGIC_HUE}'
'%{BKY_LOOPS_HUE}'
'%{BKY_MATH_HUE}'
'%{BKY_TEXTS_HUE}'
'%{BKY_LISTS_HUE}'
'%{BKY_COLOUR_HUE}'
'%{BKY_VARIABLES_HUE}'
'%{BKY_VARIABLES_DYNAMIC_HUE}'
'%{BKY_PROCEDURES_HUE}'

Diese Stringwerte können sowohl in den JSON-Definitionen als auch in block.setColour(..) verwendet werden.

Sie können eigene Farbkonstanten hinzufügen, indem Sie Blockly.Msg hinzufügen:

// Define the colour
Blockly.Msg.EVERYTHING_HUE = 42;
// Use in a block or block definition:
block.setColour('%{BKY_EVERYTHING_HUE}');

Das Speichern der Farben in der Lokalisierungsstringtabelle mag ungewöhnlich erscheinen, ist aber praktisch, da die JSON-Notation bereits Verweise auf die Verweise unterstützt. Bei Bedarf können damit auch Farben lokalisiert werden.

Bedenken hinsichtlich der Barrierefreiheit

Blockly setzt Farben als starken Hinweis auf die Rolle der einzelnen Blöcke und zur Gruppierung von Blöcken. Bei den enthaltenen Blöcken ist diese Angabe unter dem Text des Blocks und daher kein kritisches Attribut. Bei der Auswahl einer Farbpalette für den Block sollte jedoch die Farbblindheit berücksichtigt werden.

Blockly bietet mehrere Themes zur Behebung bestimmter Arten von Farbblindheit an. Auf dieser Seite finden Sie Farbpaletten mit den Beispielen 7, 12 und 15, mit denen versucht wird, die Unterscheidung zwischen den häufigsten Formen der Farbenblindheit zu maximieren. Beachten Sie, dass dies keinen 7-, 12- oder 15-Blockkategorien in Blockly zugeordnet werden würde, da einige Schattierungen für Schattenblöcke und -felder reserviert sein sollten.