SASS函数检查值是否为map返回错误

时间:2018-02-07 12:10:16

标签: css sass

我想检查一个函数的值是否为map。

@function func($props...) {
      @if(is-map($props)) {
        @return 'something';
      }
      @else {}
    } 


h1 {
  color: func((color: red));
}

我收到错误:

  

(颜色:红色)不是有效的CSS值。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我个人从未听说过任何名为is-map的本地Sass函数。如果要检查某些内容的类型,请使用type-of函数,例如,在这种情况下,检查type-of($props) == map可以解决您的问题。

@function func($props...) {
  @if(type-of($props) == map) {
    @return 'something';
  }
  @else {}
}

答案 1 :(得分:0)

因为函数返回map。不是预期的颜色。使用map-get可以访问属性值。

nth($props, 1)

你有变量参数。要获得第一个参数,请使用@mixin print($declarations) { @if $declarations { @each $property, $value in $declarations { #{$property}: $value } } @else { @error "mixin print: $declarations is not specified"; } }

Sassmeister demo

<强>更新

如果地图中的参数是动态的,您可以使用此mixin而不是函数。

{{1}}

Mixin sassmeister demo