为了守护老师在深夜批改文件时的视力,开发部专门研发了名为“潜行模式”的夜间主题。爱丽丝发现,在黑暗中只有屏幕微光时,浅色背景会造成严重的“致盲攻击”!
目前前端工作已经接近尾声,我们不仅完成了界面的重绘,还对底层色彩系统进行了彻底的语义化重构。我们的视觉设计师(其实是才羽绿)参考了千禧年废墟探险时的光影分布,为系统注入了深色调的能量补给。在这个模式下,所有的 Markdown 渲染组件都会自动切换配色方案:
- 背景层: 采用
blue-grey-800作为底色,降低蓝光辐射。 - 文字层: 智能调整对比度,确保易读性。
- 代码块: 切换至专为程序员设计的“午夜霓虹”高亮主题。
正如我们在夜间执行任务时一样,
所有的交互都变得轻柔且隐秘。老师可以在设置面板中手动切换,或者选择“随系统自动调节”。
为了实现平滑的主题切换,我们采用了 @mixin 技术来管理不同的主题包(Arona 模式与 Plana 模式)。通过定义语义色系,我们确保了代码的可维护性。以下是系统核心的部分变量配置:
/* 夜间模式(Plana)核心语义定义 */
@mixin plana {
--text-plain: var(--grey-1000); /* 默认文字 */
--root-bg: var(--blue-grey-800); /* 背景底层 */
--card-bg: var(--blue-grey-700); /* 卡片背景 */
--md-code-bg: var(--blue-grey-alpha-800); /* Markdown代码块背景 */
--link-color: var(--blue-100); /* 链接文字颜色 */
}
css
即使在伸手不见五指的深夜,普拉娜也会在后台静静地为您守候。老师可以观察到,链接颜色 --link-color 已经调整为更加柔和的浅蓝色,以适应深色的背景基调。
除了视觉风格的飞跃,爱丽丝与开发部的伙伴们还针对移动端进行了史诗级的优化!柚子部长曾提到,老师们经常需要在前往工作区的电车上通过手机查看 MomoTalk,因此“单手操作的流畅度”成为了我们的最高优先级任务。
我们引入了基于 Tailwind CSS 的流式栅格系统,确保页面在不同尺寸的屏幕上都能优雅伸缩。以下是我们的适配策略:
- 流体排版: 我们不再使用固定的像素宽度。通过
w-full与max-w-screen-xl的配合,文章在平板上会呈现精致的双栏布局,而在手机端则自动折叠为更适合阅读的垂直流。 - 触控交互增强: 所有的操作按钮(如“回复”、“收藏”)都扩充了点击热区。我们遵循 44x44px 的黄金触控准则,避免老师在操作时误触凯撒集团的垃圾信息。
- 侧边栏抽屉模式: 在小屏幕下,复杂的导航菜单将隐藏在左侧的“汉堡菜单”中,通过流畅的 CSS 动画呼出,最大程度留出阅读空间。
桃井还特意增加了一个滑动手势,向右滑动即可快速切换学生列表!
此外,我们针对移动端的网络环境优化了 Asset-Gateway。当检测到移动数据连接时,系统会优先下发经过 WebP 高度压缩的小尺寸缩略图,只有在老师点击后才会加载高清原图。正如我们在照片中看到的那样:

通过这种全方位的响应式设计,MomoTalk 微服务现在不仅是一个网页,它更像是一个原生应用,随时随地守护着老师与学生们的每一分羁绊。
在最后的集成测试阶段,爱丽丝发现了一些让勇者也感到棘手的“魔物”。绿通过数据监测发现,原本存储在 LocalStorage 中的用户偏好(如主题选择、音量设置)在跨域子域名下无法共享。为了解决这个问题,我们将核心偏好数据从 LocalStorage 移植至 Cookie。
通过设置 SameSite=Lax 和 Domain=.millealice.com,我们实现了不同微服务节点间的偏好同步。这意味着老师在主站选择的“夜间模式”,能够无缝应用到资源网关和通讯模块中。以下是迁移逻辑的示意:
// 偏好设置迁移补丁
const migratePreferences = () => {
const localTheme = localStorage.getItem('theme');
if (localTheme) {
document.cookie = `theme=${localTheme}; domain=.millealice.com; path=/; max-age=31536000`;
localStorage.removeItem('theme'); // 清理旧魔法记录
}
};
typescript
另一个挑战来自于 Safari 浏览器的 100vh 兼容性问题。在 iOS 端,Safari 的工具栏会动态遮挡页面底部,导致原本设定为全屏的容器出现难看的滚动条或底部被截断。桃井抱怨说这简直是“掉进了重力异常区”。
为了修复这个问题,我们抛弃了传统的 height: 100vh,改用现代 CSS 的解法:
/* 修复 Safari 视口高度异常 */
.main-container {
height: 100dvh; /* Dynamic Viewport Height */
/* 针对旧版浏览器的回退方案 */
@supports not (height: 100dvh) {
height: -webkit-fill-available;
}
}
css
通过引入 dvh (Dynamic Viewport Height) 单元,我们的页面高度能够感知工具栏的状态并自动调整。现在的 MomoTalk 网页版,无论是在 PC 端还是在 iPhone 的 Safari 浏览器上,都能像阿洛娜的草莓牛奶一样顺滑!

