本文档提供了 Gitea 用户界面组件和样式架构的技术概述。它涵盖了核心 CSS 组织、组件系统、样式模式以及如何在代码库中处理各种 UI 元素。
有关特定的前端构建工具和资源编译的信息,请参阅 前端构建系统。
Gitea 采用混合式样式方法,结合了
tw- 前缀的实用类样式系统围绕 `base.css` 中定义的 CSS 变量(自定义属性)构建,并通过浅色/深色主题文件进行主题化。
基本 CSS 变量在 base.css 中定义,包括
来源:web_src/css/base.css1-33 tailwind.config.js27-81
Gitea 的 CSS 通过 `index.css` 中的导入进行模块化组织
Gitea 使用几种不同的类名约定
| 前缀 | 目的 | 示例 |
|---|---|---|
| (无) | Fomantic UI 类 | ui button,ui dropdown |
tw- | Tailwind 实用类 | tw-flex,tw-p-2 |
gt- | Gitea 实用类 | gt-ellipsis |
g- | Gitea 私有样式 | g-table-auto-ellipsis |
辅助和实用类在 helpers.css 中定义
来源:web_src/css/helpers.css1-61
Gitea 结合了 Go HTML 模板和 Vue.js 组件的混合组件系统
来源:templates/repo/home.tmpl1-32 templates/repo/branch_dropdown.tmpl1-68 web_src/js/components/RepoBranchTagSelector.vue1-296
Go 模板(.tmpl 文件)提供基础 HTML 结构和服务器渲染的内容
{{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}">
{{template "repo/header" .}}
<div class="ui container {{if or .TreeNames .IsBlame}}fluid padded{{end}}">
{{template "base/alert" .}}
<!-- content -->
</div>
</div>
{{template "base/footer" .}}
模板使用 Go 的模板语法以及自定义函数,并通过 {{template "name" .}} 语法包含子模板。
来源:templates/repo/home.tmpl1-32
Vue 组件(.vue 文件)处理动态、交互式 UI 元素
一个 Vue 组件包含
来源:web_src/js/components/ActionRunStatus.vue1-31 web_src/js/components/RepoActionView.vue1-579
Gitea 使用 Fomantic UI 和自定义样式实现了按钮
| 按钮类型 | 类 | 视觉样式 |
|---|---|---|
| 默认 | ui button | 标准按钮,带边框 |
| 主要 | ui primary button | 带主要颜色的填充按钮 |
| 基础 | ui basic button | 描边按钮样式 |
| 上下文 | ui red button,ui green button | 带颜色编码的按钮 |
| 尺寸变体 | mini,tiny,small | 不同的尺寸选项 |
| 图标按钮 | ui icon button | 仅包含图标的按钮 |
按钮尺寸通过 CSS 控制
来源:web_src/css/modules/button.css20-282
下拉菜单使用 Fomantic UI 组件,并带有自定义样式和行为
RepoBranchTagSelector 中的下拉菜单实现
ui dropdown 类的 HTML 结构来源:web_src/js/components/RepoBranchTagSelector.vue1-296 templates/repo/branch_dropdown.tmpl1-68
Gitea 在组件中实现了标准化的加载指示器
还有尺寸变体
loading-icon-2px - 边框较细的加载旋转器loading-icon-3px - 边框中等的加载旋转器来源:web_src/css/modules/animations.css1-131
Gitea 通过标准断点处的媒体查询实现响应式设计
用于响应式布局的辅助类
移动端特定的适应性包括
来源:web_src/css/base.css35-45 web_src/css/helpers.css33-43 web_src/css/repo.css37-84
Gitea 集成了 Tailwind CSS 和自定义配置
这使得可以使用引用 Gitea CSS 变量的 Tailwind 类
tw-bg-primary 映射到 background-color: var(--color-primary)tw-font-mono 映射到 font-family: var(--fonts-monospace)Gitea 使用了定制版的 Fomantic UI(Semantic UI 的分支)
基础样式通过以下方式进行了大量定制
base.css 中覆盖 CSS 变量web_src/css/modules/ 中的特定组件 CSSweb_src/fomantic/_site/globals/site.variables 中的站点变量来源: web_src/fomantic/semantic.json1-31 web_src/fomantic/_site/globals/site.variables1-45
用于显示 Action/Workflow 状态
在 Vue 组件和 Go 模板中均使用,具有相同的样式。
来源: web_src/js/components/ActionRunStatus.vue1-31 templates/repo/actions/status.tmpl1-31
用于显示仓库文件的专用组件
来源: web_src/css/repo/home-file-list.css1-85
Gitea 的 UI 组件和样式系统结合了 Fomantic UI 的结构、Tailwind CSS 的实用方法以及使用 Vue.js 构建的自定义组件。这种混合方法既实现了快速开发,又保证了整个应用程序的一致性。
在 Gitea 中使用 UI 时
tw- 前缀)用于快速样式调整来源: web_src/css/base.css web_src/css/index.css tailwind.config.js web_src/fomantic/semantic.json