class 图主题实战:让色块不再扎眼

puml.online

默认主题的 class 图在公司文档里偏花,这篇讲怎么用 skinparam 调成更克制的样式。

默认主题的问题

类图默认是彩色填充 + 粗边框。在白底 wiki 里还行,在嵌入 PPT 或暗色页面里就太花。

1
2
3
4
5
6
7
@startuml
class Animal
class Dog
class Cat
Animal <|-- Dog
Animal <|-- Cat
@enduml

一组克制的 skinparam

把这段加在 @startuml 之后立刻插入,覆盖默认配色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@startuml
skinparam class {
BackgroundColor #FAFAFA
BorderColor #2F4858
ArrowColor #2F4858
FontColor #1F2328
HeaderBackgroundColor #E8EEF4
}
skinparam stereotypeCBackgroundColor #FAFAFA
skinparam stereotypeABackgroundColor #FAFAFA
skinparam classAttributeIconSize 0
hide circle

class Animal {
+name: String
+age: int
+makeSound()
}
class Dog {
+breed: String
+bark()
}
class Cat {
+indoor: boolean
+meow()
}
Animal <|-- Dog
Animal <|-- Cat
@enduml

要点:

  • BackgroundColor #FAFAFA —— 米白底,比纯白柔和
  • BorderColor #2F4858 —— 深蓝灰边框,所有线条统一
  • HeaderBackgroundColor #E8EEF4 —— 标题行浅色填充
  • classAttributeIconSize 0 —— 去掉那个奇怪的锁定图标
  • hide circle —— 去掉关系线上多余的圆圈(UML2 默认是不画的)

暗色背景适配

如果文档站是暗色,主题再切一组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@startuml
skinparam class {
BackgroundColor #161B22
BorderColor #58A6FF
ArrowColor #58A6FF
FontColor #E6EDF3
HeaderBackgroundColor #21262D
}
skinparam stereotypeCBackgroundColor #161B22
skinparam stereotypeABackgroundColor #161B22
hide circle

class Animal {
+name: String
+age: int
}
class Dog
class Cat
Animal <|-- Dog
Animal <|-- Cat
@enduml

全部加皮肤主题文件

如果很多图都用同一组参数,放到 themes/puml-theme.puml!include 进来:

1
2
3
4
5
6
!include themes/puml-theme.puml
@startuml
class Animal
class Dog
Animal <|-- Dog
@enduml

CI 渲染前预拷贝一份主题文件进 vendor,每次复用。

调试技巧

想看最终主题整体效果,写个空图:

1
2
3
4
5
@startuml
class A
class B
A --> B
@enduml

逐个调 skinparam 直到满意再画真图。

  • 标题: class 图主题实战:让色块不再扎眼
  • 作者: puml.online
  • 创建于 : 2026-07-29 14:05:00
  • 更新于 : 2026-08-14 21:34:29
  • 链接: https://puml.online/blog/plantuml-theming/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。