Admin 应用共享的全局 CSS 资产:UnoCSS 风格 reset、全局基线与滚动条、NProgress 主题化样式,三个文件按子路径导出
| 项 | 值 |
|---|---|
| 包名 | @skyroc/web-admin-styles |
| 目录 | packages/web/admin-styles |
| 版本 | 0.1.0 |
| 依赖 | 无 |
| 子入口 | ./global.css、./reset.css、./nprogress.css |
这是一个纯 CSS 包,不导出任何 JS / TS 符号,也没有 . 主入口。三个 CSS 文件各自暴露成子路径:
{
"exports": {
"./global.css": "./src/global.css",
"./nprogress.css": "./src/nprogress.css",
"./reset.css": "./src/reset.css"
}
}global.css 开头就 @import 了另外两个文件,所以只引它一个就够了:
// apps/admin/src/plugins/assets.ts
import 'uno.css';
import 'virtual:svg-icons-register';
import '@skyroc/web-admin-styles/global.css';这个 assets 文件在应用启动期一次性引入:
// bootstrap.tsx
import './plugins/assets';只在需要单独控制加载顺序、或者确定不用 NProgress 时,才分开引 reset.css / nprogress.css。
一份 UnoCSS / Tailwind 风格的 preflight reset(约 380 行):
box-sizing: border-box,并把 border-width 归零、border-style 设成 solid,默认边框色读 --un-default-border-color——所以之后写 border 一个类就能出边框;html 上统一 line-height: 1.5、tab-size: 4、系统 sans 字体栈,禁用 iOS 横竖屏字号调整;body 去 margin。只有 50 来行,全是应用级基线:
@import './reset.css';
@import './nprogress.css';html / body / #app 铺满高度,text-autospace: normal(中英文间自动间距);html 的边框色、字号、文字色分别绑到 --color-border、--font-size、--color-text-base——这几个变量由 @skyroc/web-admin-theme 在运行时写到 :root 上;scrollbar-width: thin 加一整套 webkit 伪元素,宽 7px、圆角 10px、轨道透明,并单独把 antd 表头的滚动条背景抹掉;html.grayscale 一键灰度(哀悼模式),配合主题设置里的开关;::view-transition-old/new(root) 的默认动画,让主题切换的 View Transition 由应用自己控制。把 nprogress 官方样式改成跟随主题:
--nprogress-bar-color,取值链是 var(--nprogress, var(--color-primary, #6366f1))——应用可以单独覆盖 --nprogress,不覆盖就跟主题色走,再兜底一个靛蓝;z-index: 1031 固定条,末端 peg 带同色发光;配合 @skyroc/web-admin-runtime 的 setupNProgress 使用:JS 在那个包里,样式在这个包里。
| 原因 | 说明 |
|---|---|
| 可按需引入 | 不用 NProgress 的项目可以只引 reset.css + 自己的全局样式 |
| 样式与逻辑解耦 | nprogress 的 JS 在 admin-runtime,视觉在这里,改配色不用碰运行时 |
| 多应用共享 | apps/admin 与 apps/admin-example 共用同一份基线 |
一个 Admin 应用里同时有四层样式,职责不重叠:
| 来源 | 管什么 |
|---|---|
@skyroc/web-admin-styles | 应用级:reset、滚动条、灰度、NProgress、body 基线 |
@skyroc/tailwind-plugin | 提供 CSS 变量与设计 token,被下面两者消费 |
@skyroc/web-ui | 组件级:Tailwind 编译后的设计系统样式(@skyroc/web-ui/style.css) |
@skyroc/uno-config | UnoCSS 预设,业务页面写的原子类 |
apps/admin/src/styles/scss/global.scss | 应用自身的 SCSS 变量与 mixin,由 vite 的 additionalData 注入每个 .scss |
加载顺序上 reset 最先、库样式其次、应用样式最后,后者可以覆盖前者。
Last updated on