SCSS编译抛出语法错误不是有效的CSS值

时间:2018-07-23 17:30:35

标签: css sass

我有一个调色板scss文件,它具有几个功能,一个用于获取颜色,另一个用于获取颜色,但具有不透明度。该文件的编译不会引发任何错误,但是当我将功能用于不透明性时,出现了一个错误("dark": 0.1, "light": 0.8) isn't a valid CSS value,我不知道为什么。

$my-colors: (
  'default-blue': #0071ce,
  'blue': #064f8e,
  'yellow': #f79428,
  'light-blue': #1888c8,
  'green': #54a546,
  'red': #C82022,
  'pink': #b51e6d,
  'orange': #e54e26
);

$my-opacity: (
  'dark': 1,
  'light': 0.8
);

@function get-color($key: 'default-blue') {
  @return map-get($my-colors, $key);
}

@function get-color-alpha($name: 'default-blue', $opacity: 'dark') {
  $color: get-color($name);
  // Get the named opacity level, if it exists
  @if map-key-exists($my-opacity, $opacity) {
    $opacity: map-get($my-opacity, $opacity);
  }

  // Use rgba() to manipulate the color's alpha level
  @return rgba($color, $opacity);
}

我正在使用如下功能:

li h3 {
            color: get-color-alpha('default-blue', 'light');
          }

1 个答案:

答案 0 :(得分:0)

我直接在sass v3.5.6文档中查找了问题,发现错误是由“ {map} -key-exists”功能引起的:http://sass-lang.com/documentation/Sass/Script/Functions.html

我没有找到该函数,但是我发现要知道映射是否具有与键关联的值,必须使用map-has-key($map, $key)。因此,如果您更改它并编写如下内容:

$my-colors: (
  'default-blue': #0071ce,
  'blue': #064f8e,
  'yellow': #f79428,
  'light-blue': #1888c8,
  'green': #54a546,
  'red': #C82022,
  'pink': #b51e6d,
  'orange': #e54e26
);

$my-opacity: (
  "dark": 1,
  "light": 0.8
);

@function get-color($key: 'default-blue') {
  @return map-get($my-colors, $key);
}

@function get-color-alpha($name: 'default-blue', $opacity: 'dark') {
  $color: get-color($name);
  // Get the named opacity level, if it exists
  @if map-has-key($my-opacity, $opacity) {
    $opacity: map-get($my-opacity, $opacity);
  }

  // Use rgba() to manipulate the color's alpha level
  @return rgba($color, $opacity);
}

li h3 {
  color: get-color-alpha('default-blue', 'light');
}

我们的beautifulsass版本3.5.6编译:

li h3 {
  color: rgba(0, 113, 206, 0.8);
}

哇!终于成功了!” 我说! :D