为什么Sass功能不在选择器外工作?

时间:2014-07-28 13:02:19

标签: function scope sass selector

我有example.scss个文件。在导入(解析)时,我想将值推送到地图。

// Declare selectors


register(example);

在导入之前,已导入以下内容:

$example-map: (

);

@function register($key){
 $pointless: map-set($example-map, $key, true); // Have to assign to a variable
 @return true; // Have to return something
}

这是无效的,因为看起来无法在选择器之外调用函数。这是为什么?

Codepen here

1 个答案:

答案 0 :(得分:1)

您可以使用mixin代替。当然,打字要多一点,但它应该有用。

这是我的快速测试:

$register: ();

@mixin register ($key) {
  @if not index($register, $key) {
    $register: append($register, $key);
  }
}

@include register(foo);
@include register(bar);
@include register(bar);
@include register(baz);

body {
  content: $register;
}

然后,您可以测试它是否仅使用index注册。

@if index($register, foo) {
  .foo {
    color: red;
  }
}

这是一个小型演示:

Sassmeister:http://sassmeister.com/gist/6069ebaba50d29052eeb