עיצובים הם דרך להתאים אישית את המראה והתחושה של Blockly. אפשר להתאים אישית את צבעי הבלוק, צבעי הקטגוריות ורכיבים מסוימים באמצעות הכיתה Themes
. אם רוצים להתאים אישית רכיבים נוספים, אנחנו מספקים את שם העיצוב בתור כיתה ב-div של ההזרקה. כך המשתמשים יכולים לשנות את המראה של רכיבים שלא נתמכים באמצעות CSS. המטרה העיקרית שלנו ביצירת עיצובים היא לעזור למפתחים ליצור חוויות ב-Blockly נגישות יותר.
מאפייני עיצוב
עיצוב הוא אובייקט עם כמה מאפיינים: עיצוב הבסיס שעליו מתבססים, אובייקט סגנון לבלוקים, לקטגוריות, לרכיבים ולגופנים, והאפשרות להשתמש בכותרות לבלוקים של התחלה.
סגנון הבלוק
סגנון בלוק מורכב מארבעה שדות:
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
}
כובעי Start
אם מגדירים את startHats: true
ישירות באובייקט של העיצוב, יתווסף כובע לכל הבלוקים ללא חיבורי קלט או פלט קודמים. אם אתם רוצים לשלוט בדיוק באילו בלוקים יופיע הכובע, תוכלו להשתמש במקום זאת במאפיין block style.
עיצובים מותאמים אישית
כדי להוסיף עיצוב לאפליקציית Blockly, צריך לבצע את הפעולות הבאות:
- יצירת עיצוב
- הוספת שמות של סגנונות
- הגדרת העיצוב בסביבת העבודה
יצירת עיצוב
אפשר ליצור נושא באמצעות ה-constructor או באמצעות defineTheme
. בעזרת defineTheme
אפשר להרחיב בקלות עיצוב קיים ולהגדיר את כל הערכים באמצעות אובייקט אחד. לעיצוב יש שם, והוא אובייקט עם סגנונות הבלוקים, סגנונות הקטגוריות ומאפיינים אחרים כמו שהסברנו למעלה.
לעיצוב יכול להיות גם עיצוב בסיסי, שיספק ערכי ברירת מחדל לכל הערכים שלא צוינו בעיצוב המותאם אישית.
const theme = Blockly.Theme.defineTheme('themeName', {
'base': Blockly.Themes.Classic,
'blockStyles': {
'logic_blocks': {
'colourPrimary': '#4a148c'
},
'math_blocks': {...}
},
'categoryStyles': {...},
'componentStyles': {...},
'fontStyle': {...},
'startHats': true
});
דוגמה לשימוש ב-defineTheme
הוספת שמות של סגנונות
עכשיו, אחרי שיצרנו נושא, אנחנו צריכים להוסיף את שמות הסגנונות להגדרות של הבלוקים והקטגוריות.
קטגוריות
האופן שבו מגדירים את תיבת הכלים קובע איך צריך להוסיף את שם הסגנון. מידע נוסף זמין בדף ארגז הכלים.
חסימות
אופן הגדרת הבלוק קובע איך צריך להוסיף את שם הסגנון. מידע נוסף על הגדרות של בלוקים זמין בדף בלוקים מותאמים אישית. תצטרכו להקצות לבלוק אחד מסוגי הסגנונות של הבלוק שהגדרתם במאפיין 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 יש סקריפט שמקבל מפה של גוונים או ערכים הקסדצימליים ומחשב את הצבעים המשניים והשלישונים שלהם. הסקריפט נמצא בתיקייה scripts/themes.
עיצובים מובנים
אפליקציית Blockly מספקת כמה נושאים לנגישות, במיוחד סוגים מסוימים של ליקוי בראיית צבע:
יש לנו גם: