# 工作区注释

工作区注释是可输入文本的图形元素,通常用于给代码添加说明,作用类似文本编程语言中的注释。

工作区注释

注意

工作区注释不能添加到工具箱的弹出区中。

# 启用工作区注释

要在应用中启用工作区注释,你需要给用户提供创建入口。常见做法是在上下文菜单中加入“创建工作区注释”选项。
下面代码会注册默认的工作区注释菜单项(创建、删除、复制):

// 建议在页面加载时调用。可在注入工作区之前或之后调用。
Blockly.ContextMenuItems.registerCommentOptions();

你也可以自己实现上下文菜单项,或提供其他创建方式。更多见 上下文菜单

# 视觉样式自定义

工作区注释支持多种外观自定义方式。这里使用的是 CSS,而不是 主题
你可以控制注释不同部分的大多数颜色和尺寸,但不能改变这些部分的布局位置。

# 颜色 CSS 变量

可通过 commentFillColour 调整文本区域背景色,通过 commentBorderColour 调整顶部栏和边框颜色。

.blocklyWorkspace {
  --commentFillColour: blue;
  --commentBorderColour: red;
}
修改颜色后的工作区注释

# CSS 类

注释视图不同元素会带有不同 CSS 类,你可以基于这些类定向改样式。

CSS 类 图示
blocklyComment, blocklyDraggable 工作区注释整体
blocklySelected, blocklyCommentHighlight 选中注释 选中折叠注释
blocklyCollapsed 折叠注释
blocklyCommentTopbar 顶部栏
blocklyFoldoutIcon 展开收起图标
blocklyCommentPreview, blocklyText 预览文本
blocklyDeleteIcon 删除图标
blocklyText 输入文本
blocklyResizeHandle 缩放手柄

# 基础 CSS 用法

多数情况下,直接对对应类添加样式即可:

.blocklyCommentTopbarBackground {
  height: 50px;
}
更高顶部栏

# 文本相关 CSS

文本样式需要更具体的选择器,才能覆盖渲染器生成的默认样式。

/* 修改预览文本。 */
.blocklyComment .blocklyCommentPreview.blocklyText {
  fill: blue;
}

/* 修改输入文本。 */
.blocklyComment .blocklyText {
  color: blue;
}
蓝色预览文本 蓝色输入文本

# 选中高亮 CSS

注释被选中时,高亮样式应用对象取决于是否折叠:
展开状态应用到 blocklyCommentHighlight,折叠状态应用到 blocklyCommentTopbarBackground

/* 展开状态高亮。 */
.blocklySelected .blocklyCommentHighlight {
  stroke: #fc3;
  stroke-width: 3px;
}

/* 折叠状态隐藏默认高亮。 */
.blocklyCollapsed.blocklySelected .blocklyCommentHighlight {
  stroke: none;
}

/* 折叠状态改为高亮顶部栏。 */
.blocklyCollapsed.blocklySelected .blocklyCommentTopbarBackground {
  stroke: #fc3;
  stroke-width: 3px;
}

# 图标

blocklyFoldoutIconblocklyDeleteIconblocklyResizeHandle 都应用在 <image> 元素上。
如果你想改图标颜色或形状,可以在 media 目录中提供替换图像资源。

图像文件名 图示
foldout-icon.svg 展开收起图标
delete-icon.svg 删除图标
resize-handle.svg 缩放手柄

# 删除图标

删除图标默认隐藏。如果要启用,需要用 CSS 显示它:

.blocklyDeleteIcon {
  display: block;
}

# 默认尺寸

可通过 Blockly.comments.CommentView.defaultCommentSize 设置默认注释尺寸:

Blockly.comments.CommentView.defaultCommentSize = new Blockly.utils.Size(200, 200);