自己写的页面已经变暗,日期选择器和下拉弹窗还是纯白,晚上点开一闪,版本是 element-plus 2.4.4。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

document.documentElement.classList.toggle('dark', theme === 'dark');
// main.js 中引入 element-plus/theme-chalk/dark/css-vars.css

组件库的暗色主题依赖 html.dark 这个类名与一组 CSS 变量,项目只切了自定义的 data-theme,没有同步加类。弹层又挂到 body 末尾,容器内的变量覆盖不到。这一点先确认清楚,后面就不用反复试。

「第三方组件暗色」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

具体做法是,切换主题时同时给 html 加或移除 dark 类;引入组件库的暗色变量文件 确认打包顺序在组件样式之后;打开日期选择器和下拉框逐个检查弹层背景。

改完照着核一遍,日期选择器和下拉弹层都跟随暗色,不再出现白底弹窗。

作者 9823189