Custom Style
Currently, various charts can change the styles within the charts by setting variable values through @param
and @config
, but there are still some minor issues:
- Different charts have different variable names due to varying syntax and logical entities
- It is not possible to specify styles for a single element
Therefore, we introduce a new configuration method:
- Supports configuring common style properties
- Allows binding types and specifying styles for individual elements
This configuration method takes precedence over @param
and @config
. It looks somewhat like CSS, but is not exactly the same.
Example
@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
Basic Concepts
Styling Properties
Unlike the config properties that vary across different charts, styling properties are relatively uniform. Currently, only the following styling properties can be set.
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 Directive
The @style
directive can only appear within the @pre
block. Its syntax is as follows:
@pre
@style {
#id {
<...style-attrs>
}
.class {
<...style-attrs>
}
}
@endpre
Style Selectors
.class
. Used to select style classes.#id
. Used to select specific elements, the id name composition varies across different charts, please refer to the documentation of each chart.
@bindClass Directive
This directive is used to bind the style class to the specific id elements of the chart. Its syntax is as follows:
@bindClass id1,id2 <style-class>
Some example:
@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