Skip to content

前端样式(app.css) ​

参数配置分为四篇

app.css 用来覆盖框架默认样式或补充自己的样式。文件需手动创建,位置 /resources/public/app.css,与 app.js 同级;不存在时前端按默认样式运行。

加载方式 ​

index.html 在框架样式之后动态引入 app.css,并附带随构建变化的缓存戳(app.css?_=<hash>),因此它的规则天然排在框架规则后面,修改后刷新页面即可看到效果,不需要重新构建前端。

分工建议:

想改什么用什么
主题色、顶栏颜色、皮肤、菜单模式、登录页布局app.js 的 theme 配置,不要写 CSS
站点 Logo、标题、图标app.js 的 logoPath / title / faviconPath
某个组件的间距、圆角、字体、隐藏某个按钮、自定义图标类app.css
整个欢迎页home.html

选择器优先级 ​

框架组件自带的样式优先级较高,覆盖时在选择器前加 :root(或 html)即可压过:

css
/* 例:登录框加宽、加大圆角、顶部加一条主题色 */
:root layout-passport .lp-card {
    max-width: 420px;
    border-radius: 16px;
    border-top: 4px solid var(--ant-primary-color);
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.18);
}

尽量避免 !important:框架在切换暗色、紧凑模式时会重新计算样式,!important 会让这些状态失效。

按主题与皮肤区分 ​

外观状态都以 class 的形式挂在 <html> 上,app.css 可以据此写差异样式:

<html> 上的 class含义
dark暗色模式(跟随系统时也会实时切换)
compact紧凑模式
brutalist-themeBrutalist 皮肤
liquid-glassLiquid Glass 液态玻璃皮肤
workspaceWorkspace 皮肤
classicClassic 皮肤
(无皮肤 class)默认皮肤
css
/* 暗色模式下登录框换成深色玻璃 */
:root.dark layout-passport .lp-card {
    background: rgba(20, 20, 20, 0.72);
}

/* 只在 Workspace 皮肤下缩小侧栏字号 */
:root.workspace .alain-default__aside .sidebar-nav__item {
    font-size: 13px;
}

设计令牌(CSS 变量) ​

框架的颜色与字体都定义为 CSS 变量,并在暗色模式下自动切换取值。自定义样式请引用这些变量,而不是写死颜色,这样暗色、紧凑与各皮肤都会自动适配:

变量用途
--ant-primary-color主题色(来自 app.js theme.primaryColor 或用户选择)
--erupt-bg-layout页面 / 画布背景
--erupt-bg-container卡片、面板、表头等容器背景
--erupt-bg-elevated弹出层、浮动面板背景
--erupt-bg-spotlight表头、斑马纹等轻微强调背景
--erupt-text / --erupt-text-secondary / --erupt-text-tertiary / --erupt-text-quaternary四级文字颜色
--erupt-border / --erupt-border-secondary边框
--erupt-fill / --erupt-fill-secondary / --erupt-fill-tertiary悬停、按下、轨道等中性填充
--erupt-header-bg / --erupt-header-text / --erupt-header-fill / --erupt-header-active-bg / --erupt-header-border顶栏配色,由顶栏颜色设置写入,一般不需要覆盖
--erupt-scrollbar-track / --erupt-scrollbar-thumb滚动条
--erupt-font / --erupt-code-font界面字体 / 等宽字体

变量本身也可以在 app.css 中覆盖,例如替换全局字体:

css
:root {
    --erupt-font: "Inter", "PingFang SC", "Microsoft YaHei", sans-serif;
}

常用示例 ​

自定义图标类:菜单、行操作等处的图标名都是 CSS class,可以在 app.css 里定义自己的图标(框架自带的 app.css 示例就是这样做的),然后在菜单管理中填入 icon-rocket:

css
.icon-rocket:before {
    content: "🚀";
}

隐藏不需要的顶栏按钮:

css
/* 隐藏顶栏的全屏按钮 */
:root .alain-default__header [data-action="fullscreen"] {
    display: none;
}

调整表格密度:

css
:root .erupt-table .ant-table-tbody > tr > td {
    padding-top: 6px;
    padding-bottom: 6px;
}

查找选择器

浏览器开发者工具里定位到目标元素,复制其 class 后加 :root 前缀即可。框架升级后组件 class 可能变化,升级后请复查自定义样式是否仍然生效。

贡献者

The avatar of contributor named as YuePeng YuePeng
The avatar of contributor named as Claude Fable 5.1 Claude Fable 5.1

页面历史

Released under the Apache-2.0 License.