テーマを使用すると、Blockly の外観をカスタマイズできます。ブロックの色、カテゴリの色、特定のコンポーネントは、Themes
クラスでカスタマイズできます。追加のコンポーネントをカスタマイズする場合は、テーマ名を挿入 div のクラスとして指定します。これにより、ユーザーはサポートされていないコンポーネントの外観を CSS で変更できます。テーマを作成する主な目的は、デベロッパーがよりアクセスしやすい Blockly エクスペリエンスを作成できるようにすることです。
テーマのプロパティ
テーマは、拡張するベーステーマ、ブロック、カテゴリ、コンポーネント、フォント用のスタイル オブジェクト、開始ブロックにハットを使用するかどうかなど、いくつかのプロパティを持つオブジェクトです。
ブロックのスタイル
ブロック スタイルは次の 4 つのフィールドで構成されています。
colourPrimary
(必須)- ブロックの背景色。colourSecondary
(省略可)- ブロックがシャドウ ブロックの場合の背景色。colourTertiary
(省略可)- ブロックの枠線またはハイライトの色。hat
(省略可)- 値がcap
に設定されている場合、ブロックに帽子を追加します。ハットの詳細を確認してください。
const listBlocks = {
'colourPrimary': '#4a148c',
'colourSecondary':'#AD7BE9',
'colourTertiary':'#CDB6E9',
'hat': 'cap'
}
テーマには、ブロックスタイル名とブロックスタイル オブジェクトのマッピングが含まれます。
const blockStyles = {
'list_blocks': {
'colourPrimary': '#4a148c',
'colourSecondary':'#AD7BE9',
'colourTertiary':'#CDB6E9'
},
'logic_blocks': {
'colourPrimary': '#01579b',
'colourSecondary':'#64C7FF',
'colourTertiary':'#C5EAFF'
}
}
カテゴリのスタイル
カテゴリ スタイルには、色のプロパティのみが含まれます。
- 色(必須) - ツールボックスのカテゴリの色。通常、これらの色は、カテゴリ内の大多数のブロックの
colourPrimary
と同じ色にします。これにより、ユーザーは特定のカテゴリに属するブロックを簡単に確認できます。
const mathCategory = {
'colour':'290'
}
テーマには、カテゴリ名とカテゴリ スタイル オブジェクトのマッピングが含まれます。
const categoryStyles = {
'list_category': {
'colour': '#4a148c'
},
'logic_category': {
'colour': '#01579b',
}
}
コンポーネントのスタイル
テーマでは、以下のコンポーネントの色または値を設定できます。
workspaceBackgroundColour
: ワークスペースの背景色toolboxBackgroundColour
: ツールボックスの背景色toolboxForegroundColour
: ツールボックスのカテゴリのテキストの色flyoutBackgroundColour
: フライアウトの背景色flyoutForegroundColour
: フライアウト ラベルのテキストの色flyoutOpacity
: フライアウトの不透明度scrollbarColour
: スクロールバーの色scrollbarOpacity
: スクロールバーの不透明度insertionMarkerColour
: 挿入マーカーの色(色名は使用できません)insertionMarkerOpacity
: 挿入マーカーの不透明度markerColour
: キーボード ナビゲーション モードに表示されるマーカーの色。cursorColour
: キーボード ナビゲーション モードで表示されるカーソルの色
他のほとんどのコンポーネントは、CSS でテーマ名を使用して変更できます。ただし、このリストにまだ含まれていないコンポーネントを変更したい場合や、CSS を使用して変更できないコンポーネントを変更したい場合は、詳細情報を添えて問題を報告してください。
const componentStyle = {
'workspaceBackgroundColour': '#1e1e1e',
'toolboxBackgroundColour': '#333'
}
フォント スタイル
フォント スタイルは、フォントの種類、太さ、サイズを保持するオブジェクトです。
const fontStyle = {
'family': 'Georgia, serif',
'weight': 'bold',
'size': 12
}
スタートハット
テーマ オブジェクトで startHats: true
を直接設定すると、前方または出力接続のないすべてのブロックに帽子が追加されます。帽子をつけるブロックをより細かく制御する場合は、代わりに ブロック スタイル プロパティを使用できます。
カスタムテーマ
Blockly アプリにテーマを追加するには、以下を行う必要があります。
- テーマを作成する
- スタイル名を追加する
- ワークスペースにテーマを設定する
テーマを作成する
テーマは、コンストラクタまたは defineTheme
を使用して作成できます。defineTheme
を使用すると、既存のテーマを簡単に拡張し、単一のオブジェクトですべての値を設定できます。テーマには名前があり、上記のブロックスタイル、カテゴリスタイルなどのプロパティを持つオブジェクトです。
テーマにはベーステーマを設定することもできます。ベーステーマには、カスタムテーマで指定されていない値のデフォルト値が設定されます。
const theme = Blockly.Theme.defineTheme('themeName', {
'base': Blockly.Themes.Classic,
'blockStyles': {
'logic_blocks': {
'colourPrimary': '#4a148c'
},
'math_blocks': {...}
},
'categoryStyles': {...},
'componentStyles': {...},
'fontStyle': {...},
'startHats': true
});
スタイル名を追加する
テーマを作成したので、ブロックとカテゴリの定義にスタイルの名前を追加する必要があります。
カテゴリ
スタイル名を追加する方法は、ツールボックスの定義方法によって異なります。詳細については、ツールボックス ページをご覧ください。
Blocks
ブロックの定義方法によって、スタイル名の追加方法が決まります。ブロックの定義について詳しくは、カスタム ブロックのページをご覧ください。テーマの blockStyles
プロパティで定義されたブロック スタイルのいずれかをブロックに割り当てます。
JSON
"style":"logic_blocks"
JavaScript
this.setStyle('logic_blocks');
テーマを設定する
また、使用するテーマを Blockly に指定する必要があります。同じブロック スタイルとカテゴリ名を使用する複数のテーマを定義すると、ブロック定義を自分で変更することなく、最適なテーマをユーザーが選択し、動的に変更できます。
初期のテーマ
初期テーマを設定するには、インジェクション呼び出しに options.theme
を含めることをおすすめします。テーマは JSON または JavaScript で指定できます。
JSON
{
theme: {
"blockStyles" : {
"list_blocks": {
"colourPrimary": "#4a148c",
"colourSecondary":"#AD7BE9",
"colourTertiary":"#CDB6E9"
}
},
"categoryStyles" : {
"list_category": {
"colour": "#4a148c"
}
},
"componentStyles" : {
"workspaceBackgroundColour": "#1e1e1e"
}
}
}
JavaScript
{
theme: Blockly.Theme.defineTheme('themeName', {
'blockStyles': blockStyles,
'categoryStyles': categoryStyles,
'componentStyles': componentStyles
})
}
オプションの詳細については、構成ページをご覧ください。テーマが指定されていない場合は、デフォルトで従来のテーマが使用されます。
動的テーマ
テーマを動的に変更する場合(ユーザーがプルダウン メニューからテーマを選択できるようにする場合など)は、yourWorkspace.setTheme(theme)
を呼び出します。
ブロック スタイルの作成スクリプト
Blockly は、色相または 16 進数値のマップを取り込んで、それらのセカンダリ カラーとターシャリ カラーを計算するスクリプトを提供します。スクリプトは scripts/themes フォルダにあります。
組み込みのテーマ
Blockly には、ユーザー補助向けのさまざまなテーマが用意されています。特に、特定の種類の色覚異常に対応しています。
また、