2016-11-18 3 views
-1

У меня есть три Sass файлов (со всем необходимым импортом):SASS: добавление расширения в Mixin

  • заголовка
  • переменных
  • спрайтов

в переменном я быть_наст:

@mixin svg-sprite($sprite) { 
    @extend .{$sprite}; 
    @extend .{$sprite}-res; 
} 

в заголовке, я звоню:

@include svg-sprite(".logo"); 

и спрайты:

%svg-common { 
    background: url("svg/sprite.view.svg") no-repeat; 
} 

.logo { 
    @extend %svg-common; 
    background-position: 0 58.3969465648855%; 
} 

.logo-res { 
    width: 180px; 
    height: 80px; 
} 

, но я получил ошибку:

Error: Invalid CSS after " @extend": expected selector, was ".{$sprite};" 
     on line ** of ****.scss 
>> @extend .{$sprite}; 

, что я сделал не так?

+0

@Harry может быть, есть какие-либо обходной путь? использовать мой спрайт? – brabertaser19

+0

Извините за мой предыдущий комментарий. Я стою исправлено. Ответ, приведенный ниже, работает для меня, и кажется, что Сасс это поддерживает. – Harry

ответ

2

Проблема заключается в том, что вы забыли # когда интерполирования в пределах mixin

строки кода должен выглядеть следующим образом

@mixin svg-sprite($sprite) { 
    @extend #{$sprite}; 
    @extend #{$sprite}-res; 
} 
+0

Вы правы. Таким образом, Sass разрешает '@ extend' с интерполированным селектором. Я стою исправлено. – Harry

+1

Да, да. Интерполяция очень эффективна и отлично работает при работе с селекторами. –

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