我想实现类似这样的效果:
.some-link {
@if var(--scheme-type) == 'dark' {
color: var(--primary);
} @else {
color: #3b5998;
}
但显然这是不可能的,因为 CSS 中没有 if 语句,而且 SCSS 也不是在运行时处理的。
据我所知,Discourse 并没有添加任何类来指示当前是否启用了深色模式,而 CSS 也不允许在选择器中使用自定义属性。
有什么好的变通方案吗?
我想实现类似这样的效果:
.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);
}
太好了,看起来能用了 ![]()
参数顺序和函数名不太一致,有点奇怪。
所以应该是 dark-light-choose(#3b5998, $primary)。