# 分类外观
Blockly 提供了默认的分类工具箱界面,并支持基础样式定制。
如果你需要更深入的 UI 定制,可参考自定义 Blockly 工具箱 Codelab (opens new window)和2021 Toolbox APIs 演讲 (opens new window)。

# 分类 CSS
你可以使用 CSS 定制分类工具箱。
分类工具箱由多个 HTML 元素组成,每一部分对应不同角色。例如,每个分类有独立的 div,图标和标签分别使用不同的 span。
Blockly 会为同类型部件分配默认 CSS 类。例如所有标签 span 都会使用 blocklyToolboxCategoryLabel。你可以用这些类统一设置同类型部件样式。Blockly 自身也在分类工具箱默认样式中使用这些类。
你还可以给单个部件指定自定义 CSS 类。例如给不同分类标签分配不同类名,实现同类型部件的差异化样式。
# 默认 CSS 类
下表列出分类工具箱各部件的类型、描述和默认 CSS 类。
| 部件类型 | 描述 | 默认 CSS 类 |
|---|---|---|
contents | 包含全部分类的 div | blocklyToolboxCategoryGroup |
container | 包含单个分类及其子分类的 div | blocklyToolboxCategoryContainer |
row | 包含分类行的 div | blocklyToolboxCategory |
rowcontentcontainer | 包含标签和图标的 div | blocklyTreeRowContentContainer |
icon | 包含图标的 span | blocklyToolboxCategoryIcon |
label | 包含标签文本的 span | blocklyToolboxCategoryLabel |
CSS 也用于标记部件状态:
| 状态 | 描述 | 默认 CSS 类 |
|---|---|---|
selected | 分类被选中时添加到 row div | blocklyToolboxSelected |
openicon | 带子分类的分类展开时添加到 icon span | blocklyToolboxCategoryIconOpen |
closedicon | 带子分类的分类折叠时添加到 icon span | blocklyToolboxCategoryIconClosed |
# 自定义 CSS 类
使用 JSON 工具箱时,通过 cssConfig 属性配置自定义类;使用 XML 工具箱时,通过 css- 前缀属性配置自定义类。部件定位都用“部件类型”来指定。
例如你想让所有标签都为白色,但每个分类行使用不同背景色,就可以为分类行添加不同自定义类。

下面示例给每个分类的 row 分配自定义 CSS 类。注意示例中保留了默认 row 类 blocklyToolboxCategory,因为 Blockly 在设置类名时会覆盖 class 属性。如果不保留默认类,会丢失该默认类对应样式。
在 CSS 文件中,可以用自定义类设置行颜色,并用默认类设置标签颜色:
.myRow {background-color: green}
.yourRow {background-color: red}
.blocklyToolboxCategoryLabel {color: white}
# 主题
主题可以一次性定义整个工作区的颜色,包括分类颜色。
如果你需要更细粒度控制,请使用 CSS。
要使用主题分类样式,需要在分类上设置 categorystyle:
# 颜色
你也可以直接在分类上指定颜色,但官方不推荐。
颜色值是 0-360 的字符串,表示色相。注意字段拼写是英式 colour。
另外也支持使用可本地化的颜色引用。
← 禁用、隐藏或展开分类 编程式访问 →