可以在Sass映射循环中使用切片来在第二个实例处开始循环吗?

时间:2018-10-25 21:33:38

标签: loops sass each slice sass-maps

我有一个断点图,如下所示:

$grid-breakpoints: (
    xs: 0,
    sm: 568px,
    md: 768px,
    lg: 992px,
    xl: 1280px,
    xxl: 1500px
) !default;

我需要遍历这些,但是我想在sm断点处开始循环。这是我当前的循环:

@each $name, $value in $grid-breakpoints {
    @include media-breakpoint-up(#{$name}) {
        @for $i from 1 to 13 {

            .. stuff here

        }
    }
}

到目前为止,我还没有找到一个,但是有一种方法可以将我的上方的起始线调整为类似这样的内容:

@each $name, $value in $grid-breakpoints[2:] {

欢呼

2 个答案:

答案 0 :(得分:1)

您可以检查循环中的索引号,如果它大于1,请执行以下操作:

$grid-breakpoints: (
    xs: 0,
    sm: 568px,
    md: 768px,
    lg: 992px,
    xl: 1280px,
    xxl: 1500px
) !default;

@each $name, $value in $grid-breakpoints {
  $i: index($grid-breakpoints, $name $value);

  @if $i>1{

    do something...

  }
}

答案 1 :(得分:1)

您可以使用map-remove函数,该函数将ArgList作为第二个参数。

Demo (SassMeister)

$grid-breakpoints: (
    xs: 0,
    sm: 568px,
    md: 768px,
    lg: 992px,
    xl: 1280px,
    xxl: 1500px
) !default;


@each $name, $value in map-remove($grid-breakpoints, 'xs', 'sm') {
  .. stuff here
}