【问题标题】:Create CSS custom properties from SCSS variables从 SCSS 变量创建 CSS 自定义属性
【发布时间】:2020-03-16 18:02:52
【问题描述】:

我有一个颜色名称和值的 SCSS 映射。我想像这样从它们创建 CSS 自定义属性:

SCSS

$colours:(
  "gray-500":    #f7fafc,
  "red-500":     #f56565,
  "green-500":   #48bb78
);

所需的结果 CSS

--gray-500:  #f7fafc;
--red-500:   #f56565;
--green-500: #48bb78;

我知道如何在地图中循环,但我要了解的是如何将键用作自定义属性名称,以及如何在其前面加上 --。我能找到的与该主题相关的所有示例都涉及手动输入自定义属性名称 - 而不是从地图的键中收集它。

这是我目前所拥有的:

@each $colour, $value in $colours {
    --#{$colour}:$value;
}

这会产生错误:expected "{" 插入符号指向此行的末尾:

--#{$colour}:$value;

我正在使用 Dart Sass 1.23.7

【问题讨论】:

    标签: css sass


    【解决方案1】:

    SCSS to CSS 上,您可以使用以下内容:

    :root {
      $colours:(
        "gray-500": #f7fafc,
        "red-500": #f56565,
        "green-500": #48bb78
      );
    
      @each $key_name, $value in $colours {
        --#{$key_name}: #{$value};
      }
    }
    

    demo on jsfiddle.net

    SASS to CSS 上,您必须在:root 元素内使用@each(或在其中定义一个元素):

    $colours:(
      "gray-500": #f7fafc,
      "red-500": #f56565,
      "green-500": #48bb78
    );
    
    :root {
      @each $key, $value in $colours {
        --#{$key}: #{$value};
      }
    }
    

    【讨论】:

    • 我就是这么想的。我在该行末尾收到一条错误消息expected "{"。我会更新我的问题。
    • @Quasipickle 因为您需要将变量放在元素内::root { @each $key_name, $value in $colours { --#{$key_name}: $value; } }
    • @TemaniAfif 在:root{ } 内包装该循环没有影响。
    • @Quasipickle 它对我有用:sassmeister.com
    • @AGoranov - 修复了 SCSS 代码(@each 上的值):jsfiddle.net/vgwm2k9s
    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2017-04-14
    相关资源
    最近更新 更多