代码之家  ›  专栏  ›  技术社区  ›  Phoenix_uy

SCSS编译引发语法错误不是有效的CSS值

  •  1
  • Phoenix_uy  · 技术社区  · 8 年前

    我有一个带有两个函数的调色板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 回复  |  直到 8 年前
        1
  •  0
  •   ReSedano    8 年前

    我在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');
    }
    

    我们的Beautifull SASS版本3.5.6编译了:

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

    “ 真的! 终于成功了!” 我说了!D