Я пытаюсь использовать строковую интерполяцию в моей переменной для ссылки на другую переменную:
// Set up variable and mixin
$foo-baz: 20px;
@mixin do-this($bar) {
width: $foo-#{$bar};
}
// Use mixin by passing 'baz' string as a param for use $foo-baz variable in the mixin
@include do-this('baz');
Но когда я это сделаю, я получаю следующую ошибку:
Неопределенная переменная: "$ foo-".
Поддерживает ли Sass переменные переменных в стиле PHP?
На самом деле это можно сделать, используя карты SASS вместо переменных. Вот краткий пример:
Динамическая ссылка:
Выводится как:
Создание динамически:
Выводится как:
источник
Каждый раз, когда мне нужно использовать условное значение, я опираюсь на функции. Вот простой пример.
источник
@include do-this($foo);
? ... однако это имело бы смысл, если бы функция действительно что-то делала, но только проходила ...Вот еще один вариант, если вы работаете с рельсами и, возможно, при других обстоятельствах.
Если вы добавите .erb в конец расширения файла, Rails обработает erb в файле перед отправкой его интерпретатору SASS. Это дает вам возможность делать в Ruby все, что вы хотите.
Например: (Файл: foo.css.scss.erb)
Результаты в следующем scss:
Что, грубо говоря, приводит к следующему css:
источник
Недавно я столкнулся с необходимостью динамически ссылаться на цвет.
У меня есть файл _colours.scss для каждого проекта, где я определяю все свои цвета один раз и ссылаюсь на них как на переменные.
В моем файле _forms.scss я хотел настроить стили кнопок для каждого доступного цвета. Обычно утомительная задача. Это помогло мне избежать написания одного и того же кода для каждого цвета.
Единственным недостатком является то, что вам нужно перечислить каждое имя и значение цвета до написания фактического CSS.
источник
В настоящее время создание динамической переменной в SASS невозможно, так как вы будете добавлять / подключать еще одну переменную, которую необходимо проанализировать один раз при запуске команды sass.
Как только команда запустится, она выдаст ошибку Invalid CSS, поскольку все ваши объявленные переменные будут следовать за подъемом.
После запуска вы не можете снова объявлять переменные на лету
Чтобы знать, что я понял это, просьба указать, правильно ли следующее:
вы хотите объявить переменные, где следующая часть (слово) является динамической
что-то типа
$list: 100 200 300; @each $n in $list { $font-$n: normal $n 12px/1 Arial; } // should result in something like $font-100: normal 100 12px/1 Arial; $font-200: normal 200 12px/1 Arial; $font-300: normal 300 12px/1 Arial; // So that we can use it as follows when needed .span { font: $font-200; p { font: $font-100 } }
Если это то, что вы хотите, боюсь, на данный момент это запрещено
источник