检查变量是否包含在SCSS中的单词列表中

时间:2014-09-06 04:41:40

标签: css sass

在SCSS mixin定义中,我想检查参数是否是预定义字符串之一。在以下示例中,如何创建条件以检查$arg"foo""bar"还是"baz"?如果没有,我想提出一个错误。

@mixin my-mixin($arg){
  @if some-condition {
    @error "argument must be `foo`, `bar`, or `baz`."
  };
  ...
}

1 个答案:

答案 0 :(得分:3)

到目前为止,还没有内置的方法来实现这一目标。但是,你可以简单地编写自己的@function(例如名为in_list 1 ),它使用index()方法来检查是否存在value } list如下:

/**
 * in_list — Checks if a value exists in a list
 *
 * @param  $value the needle
 * @param  $list  the haystack
 * @return boolen TRUE if $value is found in the $list, FALSE otherwise.   
 */
@function in_list($value, $list) {
    @return (false != index($list, $value));
}

例如:

$list: foo, bar, baz;
$val: qux;

 ...
@if in_list($val, $list) {
    // do something
} @else {
    @error "$val argument must exist in #{$list}; was '#{$val}'";
}

1。函数名称和语法的灵感来自PHP in_array()函数。