Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. Sass

Entendendo Escopo de Variáveis no Sass

by
Length:ShortLanguages:

Spanish (Español) translation by Erick Patrick (you can also view the original English article)

Nesse artigo, aprofundaremo-nos nas variáveis e escopos de variáveis do Sass. O escopo de uma variável descreve o contexto em que ela é definida e, assim, onde ela está disponível.

Para começar, cobriremos que escopos Sass suporta. Depois, explicaremos dois semáforos úteis que podemos usar para customizar o valor de uma variável. Por fim, apresentaremos as funções disponívels para verificar se uma variável existe ou não.

Escopo de Variável do Sass

Sass suporte dois tipos de variáveis: locais e globais.

Por padrão, todas variáveis definidas foras de qualquer seletor, são consideradas globais. Isso significa que elas podem ser acessíveis em qualquer lugar da folha de estilo. Por exemplo, eis uma variável global:

Por outro lado, variáveis locais são aquelas declaradas dentro de um seletor. Depois, veremos como customizar esse comportamento. Por hora, vejamos nosso primeiro exemplo.

Aqui, definimos uma mixin e então a variável btn-bg-color dentro. Essa variável é local e, assim, visível apenas para o código dentro da mixin.

Agora, podemos invocar a mixin, dessa forma:

O CSS resultante:

Imaginemos, porém, que também queremos usar essa variável (não a mixin) em outro seletor:

Isso nos daria o erro a seguir:

Isso era esperado, certo? Tentamos acessar a variável da mixin, de um escopo local. Não nos preocupemos. Como mencionado, ajustaremos esse problema em uma seção posterior.

Seletores Aninhados

Vale a pena mencionar que, se declaramos uma variável dentro de um seletor, qualquer seletor aninhado tem acesso a ela. Eis um exemplo:

Compila em:

Contudo, vejamos o exemplo abaixo, onde definimos uma função e, então, usamo-na em um seletor aninhado:

Se tentarmos compilar isso, obteremos o mesmo erro discutido antes. De novo, isso acontece porque não podemos acessar a variável text-color. Não está definida diretamente dentro do seletor pai, mas dentro da função que o seletor invoca.

Nomes de Variáveis

Variáveis globais e locais podem ter nomes iguais. Para mostrar o comportamento, veremos um quarto exemplo:

Aqui, definimos três variáveis diferentes (text-color) com o mesmo nome. A primeira é global, enquanto as outras duas são locais.

Eis alguns estilos que lançam mão delas:

E o CSS gerado:

Isso é o que era esperado?

Tenhamos em mente que não veremos esses estilos a não ser que compilemos com a versão mais atual de Sass (3.4). Por exemplo, suponhamos que usamos Sass 3.3, nosso retorno seria:

Potemos a diferença da cor do background em .wrap. Isso se dá porque, em versões anteriores do Sass (no LibSass também), se redefinirmos localmente o valor de uma global (text-color, por exemplo), esse será o novo valor da variável global. Assim, em nosso exemplo, o estilo compilado depende da ordem que declaramos a variável e as mixins.

O Semáforo default

Esse semáforo permite-nos configurar o valor de uma variável no caso dela não ter sido configurada ou for null (não atribibuída). Para explicar melhor, lançaremos mão de um cenário real. Suponhamos que temos um projeto com a estrutura a seguir:

O arquivo app.scss parece com isso:

Vejamos o conteúdo dos arquivos parciais.

Primeiro, o arquivo variables.scss contém nossas variáveis:

Notemos o semáforo default atribuído a btn-bg-color.

Segundo, o arquivo mixins.scss inclui nossas mixins:

Então, o arquivo app.css gerá será assim:

Assim, nossos botões vem com estilos padrão. Mas, suponhamos que queremos a opção de sobrescrevê-las, aplicando nossos valores customizados. Para tanto, podemos reatribuir as variáveis desejadas (padrão) no arquivo parcial config.scss.

Configurando o valor da variável para chocolate resultará no nõ uso do valor correspondente (lightblue) que recebeu o semáforo default. Assim, o CSS gerado mudará para o seguinte:

Nota: se não tivéssemos adicionado o semáforo default à variável btn-bg-color, nosso CSS seria o seguinte, pode conta da cascata do CSS:

O Semáforo global

Esse ajuda na mudança de escopo de variáveis locais.

Lembremo-nos do erro que vimos no primeiro exemplo. Pois bem, aquilo aconteceu porque tentamos usar a variável btn-bg-color no seletor .wrap. Modifiquemos o exemplo pra incluir esse semáforo. Eis o novo estilo:

Como vemos abaixo, graças ao semáforo, o CSS compila sem problemas:

O semáforo global é útil, mas lembre-se que não é sempre uma boa prática mudar o escopo de uma variável.

Verificando Se Uma Variável Existe

Sass provê duas funções introspectivas para testar se uma variável existe ou não. Podemos usar as funções variable-exists e/ou global-variable-exists para verificar se variáveis locais e/ou globais existem, respectivamente.

Por exemplo, eis um caso de uso, onde definimos uma variável contendo o caminho absoluto de uma Fonte do Google. Então, escolhemos importar a fonte em nossas folhas de estilos mas, apenas, se a variável relevante for instanciada.

O resultado:

Conclusão

Nesse artigo, introduzimos o conceito de escopo de variáveis no Sass. Para clarear as coisas, vimos exemplos diferentes, então esperamos que tenham um melhor entendimento do funcionamento do escopo. Pode-se encontrar todos os exemplos do artigo nesse gist do SassMeister. Sinta-se a vontade para perguntar o que precisar nos comentários!

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.