22
33## 项目概览
44
5- WeaveFox 文档站点,基于 Docusaurus 3 构建。独立于主仓库 pnpm workspace,拥有自己的依赖管理。
5+ WeaveFox 文档站点,基于 Docusaurus 3 构建。
66
77## 项目结构
88
2121└── .npmrc # 使用 npm 官方 registry
2222```
2323
24- ## 注意事项
25-
26- - 本项目** 不在** 主仓库 pnpm workspace 内,依赖需在 ` docs/ ` 目录下单独安装
27- - ` .npmrc ` 使用官方 registry(` https://registry.npmjs.org/ ` ),与主仓库内网 registry 不同
28- - ` pnpm-workspace.yaml ` 设为 ` packages: [] ` ,防止 pnpm 向上查找主仓库 workspace
29-
3024## 常用命令
3125
3226``` bash
@@ -41,4 +35,40 @@ pnpm build
4135
4236# 本地预览构建产物
4337pnpm serve
44- ```
38+ ```
39+
40+ ## 自定义样式
41+
42+ 样式覆写集中在 ` src/css/custom.css ` ,遵循 ** CSS 优先、Swizzle 最后** 的原则。
43+
44+ ### 第一步:找到正确的类名和变量
45+
46+ 去 node_modules 中查看 ` @docusaurus/theme-classic ` 源码:
47+
48+ 1 . ** 定位组件源码目录** — pnpm 项目下路径为 ` node_modules/.pnpm/@docusaurus+theme-classic@版本号_*/node_modules/@docusaurus/theme-classic/src/theme/ `
49+ 2 . ** 阅读组件 TSX** — 找到 ` clsx() ` 、` className ` 中使用的稳定类名(如 ` theme-doc-sidebar-container ` 、` hash-link ` 、` menu__link--active ` ),这些是跨版本稳定的
50+ 3 . ** 阅读组件 CSS Module** — 同目录下的 ` styles.module.css ` ,查看组件用了哪些 CSS 属性和变量(如 ` border-right ` 、` box-shadow ` 、` content ` ),确认覆写目标
51+ 4 . ** 查找 Infima 变量** — 如果是全局样式(颜色、阴影、间距),优先找 ` --ifm-* ` 变量覆写,避免硬编码
52+ 5 . ** 避免使用 CSS Module 哈希类名** — 形如 ` styles_xxx_yyy ` 的类名是构建时生成的,升级后会变
53+
54+ ### 第二步:确定覆写方式
55+
56+ 按优先级从高到低尝试:
57+
58+ | 优先级 | 方式 | 适用场景 |
59+ | --------| ------| ---------|
60+ | 1 | Infima CSS 变量 | 全局颜色、间距、阴影等(` --ifm-* ` 变量) |
61+ | 2 | 稳定类名 + CSS 属性 | 组件级别样式(边框、间距、隐藏等) |
62+ | 3 | mask-image + CSS 变量 | 自定义图标且需要跟随主题切换颜色 |
63+ | 4 | clientModule + CSS | 需要 JS 交互的样式(如滚动检测) |
64+ | 5 | Swizzle Wrap/Eject | 需要修改组件 DOM 结构时才使用 |
65+
66+ ### 第三步:处理暗色模式
67+
68+ - 亮色模式变量在 ` :root ` 中定义,暗色模式在 ` [data-theme='dark'] ` 中覆写
69+ - 使用 ` var(--ifm-font-color-base) ` 等变量时,暗色模式会自动切换,无需额外处理
70+ - 硬编码颜色值(如 ` rgba(0,0,0,0.12) ` )需要在 ` [data-theme='dark'] ` 中单独调整
71+
72+ ### 常见陷阱
73+
74+ - ** data URI SVG 中 ` currentColor ` 不生效** — SVG 在 data URI 中是独立文档,不继承父元素颜色。用 ` mask-image ` 方案:SVG 只定义形状(` stroke='black' ` ),颜色由 ` background-color: var(--ifm-font-color-base) ` 控制
0 commit comments