我目前有一个主题,包含两套配色方案(一套浅色,一套深色)。我对深色配色方案有90%的满意度,但在某些情况下仍希望进行调整。
例如,在深色配色方案中,耳语(whispers)的背景色与前景色之间的对比度不足:
.whisper .topic-body .cooked {
color: var(--primary-medium)
}
我知道可以覆盖 CSS,但如果将其改为 var(--primary-light),也会影响浅色配色方案。
是否有办法仅针对单一配色方案进行设置?或者最佳实践是创建两个不同的主题,每个主题包含各自的配色方案?
我对第二种方法的主要顾虑是,这将导致我需要复制大量其他与颜色无关的自定义设置。
Johani
(Joe)
2
当然,有几个 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 的亮度来判断的。以下是我的深色调色板:
以及浅色调色板:
我已经想不出其他办法了。