如何为单个主题调色板更改 CSS 颜色?

我目前有一个主题,包含两套配色方案(一套浅色,一套深色)。我对深色配色方案有90%的满意度,但在某些情况下仍希望进行调整。

例如,在深色配色方案中,耳语(whispers)的背景色与前景色之间的对比度不足:

.whisper .topic-body .cooked {
    color: var(--primary-medium)
}

我知道可以覆盖 CSS,但如果将其改为 var(--primary-light),也会影响浅色配色方案。

是否有办法仅针对单一配色方案进行设置?或者最佳实践是创建两个不同的主题,每个主题包含各自的配色方案?

我对第二种方法的主要顾虑是,这将导致我需要复制大量其他与颜色无关的自定义设置。

当然,有几个 SCSS 函数可以用来检查当前是浅色还是深色配色方案。

使用方式如下:

@if is-light-color-scheme() {
  // 浅色配色方案的 CSS
  h1 {
    color: green;
  }
}

@if is-dark-color-scheme() {
  // 深色配色方案的 CSS
  h1 {
    color: red;
  }
}

感谢指出这一点,@Johani。看起来 dark-light-choose($light, $dark) 函数确实能实现我想要的效果,但我现在的问题是它无法检测到调色板的切换。

我当前唯一启用的主题名为“Nacho”,它包含两个调色板:“Clara”(浅色)和“Oscura”(深色):

我用以下 CSS 对其进行了自定义:

$dark-theme-ins: #4da06d;
$light-theme-ins: #acf2bd;
.modal.history-modal {
    ins {
        background: dark-light-choose($light-theme-ins, $dark-theme-ins);
    }
}

在浅色调色板下它能正常工作:


但在深色调色板下却不起作用:


如果我将 CSS 改为如下形式,它就能正常工作:

.modal.history-modal {
    ins {
        background: $dark-theme-ins;
    }
}

因此看起来切换到深色调色板时并未被正确检测到。我注意到 is-light-color-scheme 是根据 $primary$secondary 的亮度来判断的。以下是我的深色调色板:

以及浅色调色板:

我已经想不出其他办法了。

此问题已在此处修复:Why might dark-light-choose() not work? - #2 by awesomerobot