TL;DR:如何使用 SCSS 为旧版浏览器提供具有后备功能的 CSS 变量。
我试图理解这篇 文章。在我看来,你必须已经是高级 SASS 用户才能理解它,而我不是。更糟糕的是,这是我在这个主题上找到的唯一一篇文章。
这是我想要实现的目标:
我的 scss 应该是:
body {
@include v(background-color, primary)
}
那么处理后的 CSS 应该是
body{
background: yellow; /* Yellow being defined above as the primary color */
background: var(--color-primary);
}
通过玩一点,我已经可以像这样得到 CSS 变量的值:
$colors: (
primary: yellow,
);
:root {
@each $name, $color in $colors {
--color-#{$name}: $color;
}
}
@mixin background-color($color_) {
background: var(--color-#{$color_});
}
要使用它:
body{
@include background-color(primary);
}
这将导致:
body {
background: var(--color-primary);
/* But the fallback is missing :(, I tried things with the map-get but it's really eluding me... */
}
原文由 Ced 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用的是 Sass,您可以通过 Sass mixin 自动执行回退。创建您的 CSS 变量名称及其值的映射,然后您可以在输出回退样式和首选样式的 mixin 中查找这些值
上面的 mixin 是这样使用的:
并输出以下 CSS:
等等瞧 :)