|
| 1 | +# 网站修复方案 - 2026-03-23 |
| 2 | + |
| 3 | +## 问题分析 |
| 4 | + |
| 5 | +### 问题 1:亮暗色转换被删除 |
| 6 | + |
| 7 | +**原因:** |
| 8 | +- `ThemeProvider` 组件存在,但 `layout.tsx` 没有包裹 |
| 9 | +- `ThemeToggle` 组件存在,但 `Navigation` 没有引入 |
| 10 | + |
| 11 | +**修复:** |
| 12 | +1. ✅ `layout.tsx` 包裹 `ThemeProvider` |
| 13 | +2. ✅ `Navigation` 添加 `ThemeToggle` 按钮(桌面端 + 移动端) |
| 14 | + |
| 15 | +### 问题 2:按钮下方大片空白 |
| 16 | + |
| 17 | +**原因:** |
| 18 | +- Hero 区使用 `min-h-screen`,强制扩展到一整屏 |
| 19 | +- 内容不足时,产生大片空白 |
| 20 | +- 用户以为下面没有内容 |
| 21 | + |
| 22 | +**修复:** |
| 23 | +1. ✅ 移除 `min-h-screen`,改用固定 padding(`py-32 sm:py-40 md:py-44`) |
| 24 | +2. ✅ 添加向下滚动提示(向下箭头 + 动画) |
| 25 | +3. ✅ 底部渐变遮罩,提示有更多内容 |
| 26 | + |
| 27 | +--- |
| 28 | + |
| 29 | +## 修改内容 |
| 30 | + |
| 31 | +### 1. `layout.tsx` |
| 32 | +```tsx |
| 33 | +// 添加导入 |
| 34 | +import { ThemeProvider } from '@/components/ThemeProvider' |
| 35 | + |
| 36 | +// 包裹 ThemeProvider |
| 37 | +<ThemeProvider attribute="class" defaultTheme="dark" enableSystem> |
| 38 | + <NextIntlClientProvider messages={messages}> |
| 39 | + {children} |
| 40 | + <BackToTop /> |
| 41 | + </NextIntlClientProvider> |
| 42 | +</ThemeProvider> |
| 43 | +``` |
| 44 | + |
| 45 | +### 2. `Navigation.tsx` |
| 46 | +```tsx |
| 47 | +// 添加导入 |
| 48 | +import { ThemeToggle } from './ThemeToggle' |
| 49 | + |
| 50 | +// 桌面端添加(在 LanguageSwitcher 之前) |
| 51 | +<ThemeToggle /> |
| 52 | + |
| 53 | +// 移动端添加(在 LanguageSwitcher 之前) |
| 54 | +<div className="pt-2"> |
| 55 | + <ThemeToggle /> |
| 56 | +</div> |
| 57 | +``` |
| 58 | + |
| 59 | +### 3. `page.tsx` - Hero 区 |
| 60 | +```tsx |
| 61 | +// 移除 min-h-screen,改用固定 padding |
| 62 | +<section className="relative overflow-hidden ... py-32 sm:py-40 md:py-44"> |
| 63 | + |
| 64 | +// 添加向下滚动提示 |
| 65 | +<div className="mt-12 animate-bounce"> |
| 66 | + <a href="#outline" aria-label="Scroll down"> |
| 67 | + <svg>...</svg> |
| 68 | + </a> |
| 69 | +</div> |
| 70 | + |
| 71 | +// 底部渐变遮罩 |
| 72 | +<div className="absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-surface to-transparent" /> |
| 73 | +``` |
| 74 | + |
| 75 | +--- |
| 76 | + |
| 77 | +## 测试方案 |
| 78 | + |
| 79 | +### 测试 1:亮暗色转换 |
| 80 | + |
| 81 | +**步骤:** |
| 82 | +1. 刷新 https://ceo.tinkerclaw.io/zh |
| 83 | +2. 检查导航栏右侧是否有 ☀️/🌙 图标 |
| 84 | +3. 点击图标,切换亮暗色模式 |
| 85 | +4. 检查所有区块的颜色是否正确切换 |
| 86 | + |
| 87 | +**预期结果:** |
| 88 | +- ✅ 导航栏右侧显示主题切换图标 |
| 89 | +- ✅ 点击后,页面颜色平滑切换 |
| 90 | +- ✅ 亮色模式:白色背景、深色文字 |
| 91 | +- ✅ 暗色模式:深色背景、浅色文字 |
| 92 | + |
| 93 | +### 测试 2:按钮下方空白 |
| 94 | + |
| 95 | +**步骤:** |
| 96 | +1. 刷新页面 |
| 97 | +2. 观察 Hero 区 CTA 按钮下方 |
| 98 | +3. 检查是否有向下箭头提示 |
| 99 | +4. 点击向下箭头,检查是否滚动到下一区块 |
| 100 | + |
| 101 | +**预期结果:** |
| 102 | +- ✅ CTA 按钮下方无明显空白 |
| 103 | +- ✅ 显示向下滚动箭头 |
| 104 | +- ✅ 箭头有动画(上下弹跳) |
| 105 | +- ✅ 点击箭头平滑滚动到课程大纲区 |
| 106 | + |
| 107 | +### 测试 3:移动端 |
| 108 | + |
| 109 | +**步骤:** |
| 110 | +1. 在手机或浏览器开发者工具中打开 |
| 111 | +2. 检查移动端菜单中是否有主题切换图标 |
| 112 | +3. 点击图标,验证主题切换 |
| 113 | + |
| 114 | +**预期结果:** |
| 115 | +- ✅ 移动端菜单显示主题切换图标 |
| 116 | +- ✅ 点击后主题正确切换 |
| 117 | + |
| 118 | +--- |
| 119 | + |
| 120 | +## 部署验证 |
| 121 | + |
| 122 | +**命令:** |
| 123 | +```bash |
| 124 | +cd ceo-of-one |
| 125 | +git add . |
| 126 | +git commit -m "fix: 恢复亮暗色转换 + 修复 Hero 区大片空白" |
| 127 | +git push |
| 128 | +``` |
| 129 | + |
| 130 | +**验证:** |
| 131 | +1. CI 构建成功 |
| 132 | +2. Vercel 部署完成 |
| 133 | +3. 刷新页面验证两个问题是否修复 |
| 134 | + |
| 135 | +--- |
| 136 | + |
| 137 | +## 代码审查检查清单 |
| 138 | + |
| 139 | +- [x] `ThemeProvider` 正确包裹应用 |
| 140 | +- [x] `ThemeToggle` 在桌面端和移动端都添加 |
| 141 | +- [x] Hero 区移除 `min-h-screen` |
| 142 | +- [x] Hero 区添加向下滚动提示 |
| 143 | +- [x] 构建成功(无错误) |
| 144 | +- [ ] 部署成功(等待 CI) |
| 145 | +- [ ] 用户验证(等待反馈) |
| 146 | + |
| 147 | +--- |
| 148 | + |
| 149 | +*创建时间: 2026-03-23 22:30* |
| 150 | +*状态: 等待部署和验证* |
0 commit comments