如果使用深色主题,则使用颜色方案的颜色,否则使用主题中的我的颜色

我想实现类似这样的效果:

.some-link {
  @if var(--scheme-type) == 'dark' {
    color: var(--primary);
  } @else {
    color: #3b5998;
}

但显然这是不可能的,因为 CSS 中没有 if 语句,而且 SCSS 也不是在运行时处理的。

据我所知,Discourse 并没有添加任何类来指示当前是否启用了深色模式,而 CSS 也不允许在选择器中使用自定义属性。

有什么好的变通方案吗?

我想这就是你在找的:

因此,在 color_definitions.scss 中你可以这样写:

$my-theme-color: dark-light-choose($primary, red);

:root {
  --my-theme-color: #{$my-theme-color};
}

然后在你的主题中,你就可以使用这个支持深色/浅色切换的新自定义属性了:

body {
  color: var(--my-theme-color);
}

太好了,看起来能用了 :yum:

参数顺序和函数名不太一致,有点奇怪。

所以应该是 dark-light-choose(#3b5998, $primary)