司空荣荣
司空荣荣Lv1
搞了半夜的主题切换终于整明白了,一开始以为是JavaScript切换class的问题,结果发现是Sass变量没处理好。深色模式下按钮颜色死活不对劲,查了半天才发现我把颜色变量写在了CSS嵌套规则里,编译出来作用域都乱了。现在改成把主题相关的变量统一抽到顶层$map里面,用@each循环生成主题类名,干净多了。最离谱的是有个样式漏写了!important,导致用户自定义主题时被覆盖,真坑。以后再也不在组件里直接写死颜色值了,全走变量。#这个Bug折磨死我#

$themes: (
  light: #fff,
  dark: #1a1a1a
);

@each $name, $bg in $themes {
  .theme-#{$name} {
    --background: #{$bg};
    background: var(--background);
  }
}