本文档解释了 Semantic UI 中的变量和覆盖(overrides)系统,这是其强大主题功能的基础。有关实施自定义主题的信息,请参阅 创建自定义主题。
Semantic UI 的主题系统围绕两个关键机制展开:
这些机制共同实现了组件之间的一致性样式,同时允许进行精确的定制。本文档解释了这些系统如何工作、它们的定义位置以及使用它们的最佳实践。
Semantic UI 中的变量是 LESS 变量,用于定义组件的视觉属性。它们提供了一种结构化的方式来控制:
变量遵循层级结构:
来源:src/themes/default/elements/icon.variables1-94 src/themes/default/collections/message.variables1-158
变量文件位于主题目录中,具有特定的结构。
src/themes/[theme-name]/
├── globals/
│ └── site.variables # Global variables
├── elements/
│ ├── button.variables # Button variables
│ └── icon.variables # Icon variables
├── collections/
│ ├── form.variables # Form variables
│ └── message.variables # Message variables
└── modules/
├── dropdown.variables # Dropdown variables
└── modal.variables # Modal variables
来自图标元素
来自消息集合
请注意,变量可以引用其他变量(例如 `@width: @iconWidth;`),这使得可以实现一致的设计系统。
来源:src/themes/default/elements/icon.variables52-94 src/themes/default/collections/message.variables15-25
覆盖是直接的 CSS 规则,用于补充基于变量的样式。它们允许开发者:
覆盖文件遵循与变量相同的结构,但使用 `.overrides` 扩展名。
src/themes/[theme-name]/
├── elements/
│ ├── button.overrides
│ └── icon.overrides
├── collections/
│ ├── form.overrides
│ └── message.overrides
└── modules/
├── dropdown.overrides
└── modal.overrides
来自图标元素的覆盖文件
此文件定义了每个图标的特定 Unicode 内容,这仅通过变量管理是不可行的。
来源:src/themes/default/elements/icon.overrides34-42 src/themes/default/elements/icon.overrides43-50
组件的 LESS 文件(例如 `src/definitions/elements/icon.less`)遵循以下模式:
来自图标元素的示例
来源:src/definitions/elements/icon.less16-19 src/definitions/elements/icon.less37-57 src/definitions/elements/icon.less505
当 Semantic UI 进行构建时,会发生以下情况:
这个过程允许强大的定制,同时保持一致的结构。
| 文件 | 目的 |
|---|---|
src/themes/default/globals/site.variables | 影响整个 UI 的全局变量 |
src/themes/default/elements/*.variables | 基础元素的变量(按钮、输入框、图标等) |
src/themes/default/collections/*.variables | 集合(表单、网格、菜单等)的变量 |
src/themes/default/modules/*.variables | 交互式模块(下拉菜单、模态框等)的变量 |
src/themes/default/elements/*.overrides | 基础元素的 CSS 覆盖 |
src/themes/default/collections/*.overrides | 集合的 CSS 覆盖 |
src/themes/default/modules/*.overrides | 交互式模块的 CSS 覆盖 |
theme.config | 指定要为每个组件使用的主题 |
来源:src/themes/default/elements/icon.variables src/themes/default/elements/icon.overrides src/themes/default/collections/message.variables
要定制 Semantic UI 组件,请:
Semantic UI 的变量和覆盖系统为创建自定义主题提供了强大的基础。通过了解这两种机制如何协同工作,您可以有效地定制框架的外观,同时保持其核心结构和功能。
变量提供了一致性和可维护性,而覆盖则为特定的定制提供了灵活性。层级结构确保了可以从全局设置到单个组件属性的不同级别的特异性进行更改。
来源:src/definitions/elements/icon.less src/themes/default/elements/icon.variables src/themes/default/elements/icon.overrides src/themes/default/collections/message.variables