SASS mixin не приема променливи

Имам следните миксини в моя SASS проект:

@mixin define-size($height, $width) {
  width: $width;
  height: $height;
}
@mixin define-square($size) {
  @include define-size($size, $size);
}

И се опитвам да ги извикам, но получавам грешка при компилиране...
Опитах с:

@mixin define-square(45px);
@mixin define-square(45);
@mixin define-square("45px");
@mixin define-square("45");

И всеки път получавам същата грешка:

Invalid CSS after "...   @mixin define-square(": expected variable (e.g. $foo), was "45px);")

Други миксини в същия _mixin.scss работят правилно.
Каква е моята грешка?


person Michiel    schedule 26.12.2013    source източник


Отговори (1)


За да извикате mixin, вие използвате директивата @include, така че вместо да правите:

@mixin define-square(45px);
@mixin define-square(45);
@mixin define-square("45px");
@mixin define-square("45");

Трябва да правите:

@include define-square(45px);
@include define-square(45);
@include define-square("45px");
@include define-square("45");

Вижте http://sass-lang.com/documentation/file.SASS_REFERENCE.html#idding_a_mixin


Re: грешката, която получавате:

SASS анализаторът вижда @mixin define-square( и приема, че създавате нов миксин, така че правилно очаква списък с аргументи, т.е. ($foo, $bar), но вместо това получава "45px"... -- и така в крайна сметка ви дава тази грешка.

person Rubin    schedule 26.12.2013