Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sass 在mixin中使用传递的变量作为键/值对_Sass_Mixins - Fatal编程技术网

Sass 在mixin中使用传递的变量作为键/值对

Sass 在mixin中使用传递的变量作为键/值对,sass,mixins,Sass,Mixins,我试着查找这个,但没有成功。我无法使用正确的搜索参数进行搜索 我正在SASS中创建一个mixin,它将允许我通过传递动画名称(从值和到值)来创建关键帧。下面是一个例子: @mixin keyframes($name, $from, $to) { @-webkit-keyframes #{$name} { from { left: $from } to { left: $to }

我试着查找这个,但没有成功。我无法使用正确的搜索参数进行搜索

我正在SASS中创建一个mixin,它将允许我通过传递动画名称(从值和到值)来创建关键帧。下面是一个例子:

@mixin keyframes($name, $from, $to) {
    @-webkit-keyframes #{$name} {
        from {
            left: $from
        }
        to {
            left: $to
        }
    }
}
这是一个较短的版本,因为我还将为@moz关键帧和@keyframes添加行。我更喜欢这种方法,这样我就不必在动画中重复“from”和“to”,让mixin使用@content抓取它,但我也不想假设“left”是唯一会受到影响的属性

我想做的是将$from和$to变量都视为对象,以便它们可以包含一系列键/值对。当我尝试这样做时:

$mixin keyframes($name, $from, $to) {
    @-webkit-keyframes #{$name} {
        from {
            $from
        }
        to {
            $to
        }
    }
}
…我得到编译错误,因为它不包括一个键/值对,而不是一个变量

有没有办法告诉SASS将$from和$to视为一系列键/值对?我已经尝试过#{$from},但它仍然抛出编译错误


谢谢

您不能这样做,因为属性/值不是字符串。您必须使用映射来编写它,如下所示:

@mixin keyframes($name, $from, $to) {
    @-webkit-keyframes #{$name} {
        from {
            @each $prop, $val in $from {
              #{$prop}: $val;
            }
        }
        to {
            @each $prop, $val in $to {
              #{$prop}: $val;
            }
        }
    }
}

@include keyframes(foo, (top: 10px), (top: 50px));
但是,如果您的目标是编写一个灵活的mixin,我建议您不要这样做。只需写下您自己的“从/到”语句:

@mixin keyframes($name) {
    @-webkit-keyframes #{$name} {
        @content
    }
}

@include keyframes(foo) {
  from {
    top: 10px;
  }

  to {
    top: 50px;
  }
}

谢谢你,西曼农!即使我最后不走这条路,至少知道怎么做会很好。:)