2016-10-30 2 views
0

У меня нет фона в SCSS, но я хочу внести небольшое изменение в существующий SCSS и перекомпилировать его. Тем не менее, я обнаружил, что переменные со знаком доллара появляются в выходном CSS. Даже если я отброшу свои изменения, выходной CSS не соответствует оригиналу.SCSS частично скомпилирован, переменные остались в CSS?

Например,

@-webkit-keyframes $animation-name {... 

в моем выходе, в то время как

@-webkit-keyframes move-up {... 

является ожидаемый оригинальный выход.

Я думаю, что это либо потому, что я не использовал правильную команду для компиляции файлов SCSS, либо потому, что файлы SCSS были написаны для более старого компилятора.

Я попытался следующие команды (очистить все выходные перед каждым испытанием):

sass --scss main.scss main.css 
sass --scss --update main.scss:main.css 
sass --scss --update . 

Поскольку main.scss импортирует другой файл SCSS, я также попытался скопировать содержимое файла в SCSS мере зависит основные. СКС. Это не имело никакого значения.

ответ

1

Имена переменных аргументов печатаются вместо их значений, потому что они не были интерполированным, поэтому sass использует их вместо значений.

Вы должны написать

//Assuming a variable $animation-name: move-up; 
@-webkit-keyframes #{$animation-name} { .... 

Который компилируется в

@-webkit-keyframes move-up { .... 

без интерполяции дерзости считает, что $animation-name является фактическим именемпредназначен для использования в качестве имени для анимации.

+0

Это работает; Спасибо! Мне все еще интересно, как удалось скомпилировать оригинальный автор этой части SCSS - есть ли компилятор, который не требует интерполяции? – user31039

+0

Это не ошибка, поэтому она будет компилироваться. Это просто, что строки кода имеют разные значения для sass. Когда переменная интерполируется, '# {$ animation-name}' вы говорите sass, чтобы использовать значение, хранящееся в этой переменной, вместо этого, но без интерполяции '$ animation-name' sass просто использует текст как есть. Однако, если имя переменной предоставляется там, где CSS ожидает _value_, это не требует интерполяции. 'selector {color: $ color_value}' –

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