2015-04-22 4 views
1

Я изучаю SASS/SCSS и играю с миксинами, пытаясь окунуться в разные доступные варианты.Установка scss mixin обратно в true

Ниже приведено то, что я использую для создания box-shadows. Я использую оператор if и else для отображения эфира с или без свойства вставки.

@mixin box-shadow($inset: false, $horizontal: 0px, $vertical: 1px, $blur: 2px, $color: 000) { 
    @if $inset { 
     box-shadow: $inset $horizontal $vertical $blur $color; 
    } 
    @else { 
     box-shadow: $horizontal $vertical $blur $color; 
    } 
} 

мне интересно, как установить $inset: false в true для этого, чтобы работать должным образом.

Или есть более эффективный способ добиться того, что я пытаюсь сделать?

ответ

1

Я думаю, что вместо включения переменной $inset просто укажите ключевое слово inset. Таким образом, вы можете передать истинным или ложным, и он будет разбирать правильно:

@mixin box-shadow($inset: false, $horizontal: 0px, $vertical: 1px, $blur: 2px, $color: 000) { 
    @if $inset { 
     box-shadow: inset $horizontal $vertical $blur $color; 
    } 
    @else { 
     box-shadow: $horizontal $vertical $blur $color; 
    } 
} 

.no-inset { 
    @include box-shadow($inset: false); 
    } 

    .inset { 
    @include box-shadow($inset: true); 
    } 

Выход:

.no-inset { 
    box-shadow: 0px 1px 2px 0; 
} 

.inset { 
    box-shadow: inset 0px 1px 2px 0; 
} 
+0

Спасибо за быстрый ответ ... У меня есть аддон к этому. Почему, когда я меняю значения на «box-shadow», он выводит новые и по умолчанию px? – Aaron

+0

Я не понимаю вашего комментария. – Scimonster

+0

Извините, я попал в ошибку по ошибке. '@Include box-shadow (1px 1px 1px # ff6600, $ inset: true);' выводит 'box-shadow: inset 1px 1px 1px # ff6600 1px 2px ;, но я просто пришли к пониманию, что все должны быть разделены запятой! – Aaron

Смежные вопросы