为什么 dark-light-choose() 可能不起作用?

我正在尝试在我的个性化 CSS 中使用 dark-light-choose($light, $dark) 函数,但即使我将配色方案从浅色(Clara)切换到深色(Oscura),它始终返回 $light

我在以下链接中提供了关于我的设置的更多详细信息:

到目前为止,我已经双重检查了:

  • 我的深色主题中的主色亮度高于辅助色。
  • 我按正确的顺序使用了函数参数。

我完全不知道如何调试这个问题。这可能是我的主题中的问题吗?是否还有其他变量需要考虑?

我认为,由于 SCSS 的编译方式,自定义的深色/浅色定义需要添加到主题内的 color_definitions.scss 中,而在其他 SCSS 文件中则无法生效。

color_definitions.scss 位于层叠顺序的较高位置(在许多默认样式之前),因此你不应该在那里添加 .modal.history-modal ins 部分。相反,你只需添加颜色定义本身:

$dark-theme-ins: #acf2bd;
$light-theme-ins: #4da06d;

$ins: dark-light-choose($light-theme-ins, $dark-theme-ins);

:root {
  --custom-ins: #{$ins};
}

然后在 common 或主题的其他任何文件中,你可以这样写:

.modal.history-modal {
    ins {
        background: var(--custom-ins);
    }
}

非常感谢你,Kris!你真是帮了大忙!现在一切完美运行 :tada:

我一直在尝试使用它,唯一让我困惑的是为什么颜色值必须使用变量插值。例如,如果不加插值,这段代码就无法工作:

$ins: #7f7e7e;
:root {
  --custom-ins: $ins;
}

但加上插值后就可以:

$ins: #7f7e7e;
:root {
  --custom-ins: #{$ins};
}

如果 $ins 被赋值为另一个变量(例如:$ins: $dark-theme-ins),那么两种写法都能正常工作。

我到底漏掉了什么?

这是在使用 CSS 自定义属性时 SCSS 的要求。更多详情请参见:Sass: Property Declarations