0

我有一个添加后粒子的地图生成器:

@mixin generator {
  @each $key, $value in $config {
        $infix: '\@#{$key}' !global;
        @content
      }
    }

我在多种情况下使用了上面的 mixin 在末尾添加了粒子,例如:

.y- {
  @include generator {
    &-n#{$infix} {
      display: none !important;
    }
    &-in#{$infix} {
      display: inline !important;
    }
  }
}

我收到以下错误:

“&-none”后的无效 CSS:预期的选择器,是“@”\n

我想要的是:

.y-n@key_name1{
    display: none !important;
}

.y-n@key_name2{
        display: none !important;
    }

这仅在我我们时出现\@

我可以在创建类时添加这个粒子,但是就像我说的我想在多种情况下使用它并根据条件改变粒子,所以我需要在 mixin 中。

4

1 回答 1

1

所以这行得通...

$config: (
  1: 'a',
  2: 'b',
  3: 'c'
);

@mixin generator {
  @each $key, $value in $config {
        $infix: '-#{$key}' !global;
        @content
      }
    }

.y- {
  @include generator {
    &-n#{$infix} {
      display: none !important;
    }
    &-in#{$infix} {
      display: inline !important;
    }
  }
} 

请参阅此 sassmeister https://www.sassmeister.com/gist/324c3c0003a91eb676b00dfe1877cae0

但是一旦你添加..

\@

..到你的$infix变量键字符串,它会抛出一个错误!

$infix: '\@#{$key}' !global;

我认为它会\@破坏你的 sass/css。

如果您看到CSS 中“@”符号的用途是什么?问题你只能用@符号表示(例子)......

/* Import another stylesheet from within a stylesheet */
@import url(style2.css);

/* Apply this style only for printing */
@media print {
    body {
        color: #000;
        background: #fff;
    }
}

/* Embed a custom web font */
@font-face {
    font-family: 'DejaVu Sans';
    src: local('DejaVu Sans Regular'), url(/fonts/DejaVuSans.ttf);
}

也许放弃了\@,你的 sass 会正常运行吗?

于 2018-08-27T16:11:27.087 回答