在sass地图中选择具有值的特定项目

时间:2014-06-11 15:03:08

标签: css sass

我有一个map,看起来像这样:

$settings: ("offset": 'margin-left',
    "push": 'left',
    "pull": 'right',
    "center": 'margin-left');

在我的下面,我有一个从1循环到特定变量的函数,其值为12

  @for $index from 1 to 12 {
    @each $type, $property in $settings {
      &.#{$type}-#{$index} {
        @include someFunctionDoesntMatter($property, $index);
      }
    }
  }

正如您所看到的,我已经从该map中选择了数据,但没有选择具体的数据,我只是循环所有数据。

如何选择地图中的4项,包括值?

我在循环的最后一个括号下尝试了这段代码:

  &.#{nth($settings, 4)} {
     ...
  }

但是这给了我这个错误:

cmd.exe /D /C C:/Ruby200-x64/bin/scss.bat --no-cache --update main.scss:main.css
      error features\grid\_grid-extensions.scss (Line 19: Invalid CSS after "&.": expected class name, was ""center" "margi...")

Process finished with exit code 1

1 个答案:

答案 0 :(得分:1)

nth($settings, 4)将返回键值对,而不是可用于构建选择器的值。

你可以这样做:

$settings: ("offset": 'margin-left',
    "push": 'left',
    "pull": 'right',
    "center": 'margin-left');

div {   
  &.#{nth(nth($settings, 4), 1)} {
    content: nth(nth($settings, 4), 2);
  }
}

会呈现:

div.center {
  content: "margin-left";
}

http://sassmeister.com/gist/b8e6c2dc02b0d3df52b7