自定义样式
目前各个图表可以通过 @param
和 @config
设置变量值来改变图表内的样式,但仍有一些小问题:
- 不同图表由于语法和逻辑实体不同,变量名称不完全相同
- 无法为某个单独的元素指定样式
因此我们引入一种新的配置方式:
- 支持配置通用的样式属性
- 可以为单独元素绑定类型和指定样式
这个配置方式的优先级高于 @param
和 @config
。它长得有点像 CSS,但并不完全一致。
示例
@pre @style { .people { textColor: blue; fontStyle: italic; } } @endpre erDiagram title: Custom Style Example PERSON CUSTOMER inherit PERSON CUSTOMER ||--o{ ORDER : places @bindClass entity-CUSTOMER people @bindClass entity-PERSON people
基本概念
可以设置样式的属性
与各个图表各不相同的 config 不一样,样式属性相对较为统一,目前只有以下关于样式的属性可以被设置。
import { MarkAttrs } from '@pintora/core'
export type StylableAttrs = {
backgroundColor: string
borderColor: string
fontFamily: MarkAttrs['fontFamily']
fontStyle: MarkAttrs['fontStyle']
fontWeight: MarkAttrs['fontWeight']
opacity: MarkAttrs['opacity']
textColor: string
}
@style 指令
@style
指令只能在 @pre
块内出现。它的语法如下:
@pre
@style {
#id {
<...style-attrs>
}
.class {
<...style-attrs>
}
}
@endpre
样式选择符
.class
。用于选中样式类。#id
。用于选择具体元素,id 名称的构成在各种图表中都不一样,请查阅各个图表的文档。
@bindClass 指令
此指令用于将图表的特定 id 的元素绑定到样式类。它的语法如下:
@bindClass id1,id2 <style-class>
一个例子:
@pre @style { .cls-c1 { textColor: red; } #node-C1 { backgroundColor: #c5ff64; } #node-C2 { backgroundColor: #ffe664; } .cls-c3 { textColor: #ffffff; backgroundColor: #64a1ff; } } @endpre componentDiagram title: Component Style Example [C1] [C2] [Component 3] as C3 @bindClass node-C3 cls-c3