2015-01-22 2 views
3

Я пытаюсь создать mixin с использованием условных выражений, но во время компиляции я получаю сообщение об ошибке. Ошибка генерируется является:Условный в SASS mixin throws error

Error: Properties are only allowed within rules, directives, mixin includes, or other properties. 

Вот код, который я использую:

@mixin mypadder ($topBottomBoth: myDefaultOption, $topUnits: 0, $bottomUnits: 0) { 
    @if $topBottomBoth == tp { 
     padding-top: 1em; 
     } 
    @else if $topBottomBoth == bt { 
     padding-bottom: 1em; 
     } 
    @else { 
     padding-top: 1em; 
     padding-bottom: 1em; 
     } 
    } 

Я также попытался поставить значение параметра $ topBottomBoth в кавычках, во-первых, именно там, где она появляется в параметрах (первая строка mixin), а затем добавление котировок вокруг значений этого параметра/параметра в условных тестах. В каждом случае я получаю ту же ошибку. Посмотрев на многочисленные примеры условных миксинов, я все еще не вижу, где мой синтаксис неверен.

ответ

9

Нет ничего плохого в микшинге, вы просто назовете это неправильным. Сасс знает, что свойства CSS не допускаются вне селекторов.

Неправильно:

@include mypadder; 

Правильно:

.foo { 
    @include mypadder; 
} 
+0

Agh! Как я пропустил это? Я помещал @ includes non-stop в течение нескольких дней, поэтому я не могу даже умолять «Я не знаю, как использовать mixins». Вы знаете, как вы как-то не видите дерево для деревьев ... Приятно знать, что мой основной микс был прав, хотя. Приветствия. –