跳到主要内容

配置内置主题

配置所有主题

您可能会注意到,默认主题的 CSS 变量包含配色方案的变量:

--dhx-h-primary: 200;
--dhx-s-primary: 98%;
--dhx-l-primary: 40%;

--dhx-h-secondary: 0;
--dhx-s-secondary: 0%;
--dhx-l-secondary: 30%;

--dhx-h-danger: 0;
--dhx-s-danger: 100%;
--dhx-l-danger: 60%;

--dhx-h-success: 154;
--dhx-s-success: 89%;
--dhx-l-success: 37%;

--dhx-h-background: 0;
--dhx-s-background: 0%;
--dhx-l-background: 100%;
--dhx-a-background: 0.5;
提示

颜色值以 HSL 格式指定,其中:

  • 色相(hue) 是色轮上从 0 到 360 的度数,0 为红色,120 为绿色,240 为蓝色;
  • 饱和度(saturation) 是一个百分比值;0% 表示完全不饱和(灰色),100% 表示完全饱和;
  • 明度(lightness) 是一个百分比值;100% 为白色,0% 为黑色,50% 为 "normal"

得益于这些 CSS 变量,配色方案会自动计算。这意味着,如果您更改根元素中某个配色方案变量的值,"contrast-light""dark""contrast-dark" 主题的值将会实时自动重新计算。

例如,您可以通过以下方式一次性覆盖所有 Diagram 主题的主色:

<style>
:root {
--dhx-h-primary: 0;
--dhx-l-primary: 30%;
}
</style>

此外,基于主色计算得出的变量值也会相应地重新计算。例如,聚焦颜色的值计算方式如下:

--dhx-color-focused: hsl(calc(var(--dhx-h-primary) + 10), var(--dhx-s-primary), var(--dhx-l-primary));

配置单个主题

如果您想为某个单独的 Diagram 主题 覆盖部分颜色值,需要在 'data-dhx-theme' 属性中进行设置:

<style>
[data-dhx-theme='light'] {
/* 边框 */
--dhx-border-color: #ced4da;
/* 边框结束 */

/* 配色方案 */
--dhx-h-primary: 210;
--dhx-s-primary: 30%;
--dhx-l-primary: 20%;

--dhx-h-secondary: 185;
--dhx-s-secondary: 5%;
--dhx-l-secondary: 50%;

--dhx-h-danger: 6;
--dhx-s-danger: 78%;
--dhx-l-danger: 57%;

--dhx-h-success: 168;
--dhx-s-success: 77%;
--dhx-l-success: 42%;

--dhx-l-background: 98%;
/* 配色方案结束 */
}
</style>

<script>
const diagram = new dhx.Diagram("diagram_container", {
type: "default",
});

dhx.setTheme("light");
</script>

配置 Shapebar 中形状的外观

重新定义默认配色方案

您可以通过重新定义指定配色方案的 CSS 变量来管理 Shapebar 项的外观:

  • --dhx-shapebar-item-font-color
  • --dhx-shapebar-item-background
  • --dhx-shapebar-item-border-color

这些变量的默认值取决于所应用的主题

设置自定义 CSS 变量

您还可以使用自己的 CSS 变量来调整 Shapebar 项的外观和风格。为此,您需要定义一个自定义 CSS 变量,并将其指定为 defaults 配置选项中相应属性的值。

备注

该变量的值会在 Shapebar 项被选中时赋给该项,并且不会随主题的更改而重新定义。

例如:

<style>
:root {
--rectangle-fill: #428df5;
--rectangle-font-color: #002229;
}
[data-dhx-theme='dark'] {
--dhx-shapebar-item-font-color: #fff;
--dhx-shapebar-item-background: #002229;
--dhx-shapebar-item-border-color: #007a99;

--rectangle-fill: #f54278;
--rectangle-font-color: #002229;
}
</style>

<div id="editor_container" style="height: 100%"></div>

<script>
const editor = new dhx.DiagramEditor("editor_container", {
type: "default",
defaults: {
rectangle: {
fill: "var(--rectangle-fill)",
fontColor: "var(--rectangle-font-color)"
}
}
});
// 设置深色主题
const node = document.getElementById("editor_container").childNodes[0];
dhx.setTheme("dark", node);
</script>

调整 PERT 模式下任务的外观

PERT 图模式下 Diagram 中任务的外观由 --dhx-shape-pert-header-background CSS 变量定义。该变量在默认主题中的指定方式如下:

--dhx-shape-pert-header-background: var(--dhx-gantt-base-colors-primary, #537CFA);
  • 当 PERT 图模式下的 Diagram 与 DHTMLX Gantt 一起使用时,Gantt 图表当前的配色方案将应用于 Diagram 任务
  • 当 Diagram 单独使用时,上述 CSS 变量将被设置为默认值 #537CFA