Estou tentando usar a interpolação de string na minha variável para fazer referência a outra variável:
// 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');
Mas quando faço isso, recebo o seguinte erro:
Variável indefinida: "$ foo-".
O Sass oferece suporte a variáveis de variáveis no estilo PHP?
Na verdade, isso é possível usando mapas SASS em vez de variáveis. Aqui está um exemplo rápido:
Referenciando dinamicamente:
Produz como:
Criando dinamicamente:
Produz como:
fonte
Sempre que preciso usar um valor condicional, recorro às funções. Aqui está um exemplo simples.
fonte
@include do-this($foo);
? ... no entanto, isso faria sentido, se a função realmente fizesse algo, mas só passa ...Aqui está outra opção se você estiver trabalhando com trilhos e, possivelmente, em outras circunstâncias.
Se você adicionar .erb ao final da extensão do arquivo, o Rails processará o erb no arquivo antes de enviá-lo para o interpretador SASS. Isso lhe dá a chance de fazer o que quiser em Ruby.
Por exemplo: (Arquivo: foo.css.scss.erb)
Resulta no seguinte scss:
O que, claro, resulta no seguinte css:
fonte
Recentemente, descobri a necessidade de fazer referência a uma cor dinamicamente.
Tenho um arquivo _colours.scss para cada projeto, onde defino todas as minhas cores uma vez e faço referência a elas como variáveis em todo o processo.
No meu arquivo _forms.scss, eu queria configurar estilos de botão para cada cor disponível. Normalmente uma tarefa tediosa. Isso me ajudou a evitar ter que escrever o mesmo código para cada cor diferente.
A única desvantagem é que você deve listar cada nome e valor de cor antes de escrever o css real.
fonte
Fazer uma variável dinâmica não é possível no SASS a partir de agora, uma vez que você adicionará / conectará outra var que precisa ser analisada uma vez quando você executar o comando sass.
Assim que o comando for executado, ele lançará um erro para CSS inválido, pois todas as suas variáveis declaradas seguirão o içamento.
Uma vez executado, você não pode declarar variáveis novamente em tempo real
Para saber que entendi isso, gentilmente declare se o seguinte está correto:
você deseja declarar variáveis onde a próxima parte (palavra) é dinâmica
algo como
Se é isso que você quer, estou com medo por agora, isso não é permitido
fonte