Dando Poderes Ao Css Com Sass Parte 01
Pois é, se você leu o título e achou estranho fique tranquilo, a ideia é transformar nosso CSS em um super herói com super poderes:
CSS with superpowers
Como podem ver, esse é o slogan que o próprio SASS usa, “CSS com super poderes”.
O que é SASS?
SASS é uma linguagem de extensão para o CSS, com ela conseguimos escrever códigos que não seriam possíveis apenas com CSS puro, por isso, eles costumam chamar esses recursos (features) ou extensões adicional de “super poderes”.
A ideia do post não é focar muito em “o que é” e sim “o que faz”, portanto, caso deseja saber mais informações sobre o SASS, sugiro acessar a página oficial.
Instalando o SASS
Para não extender mais o post não irei abordar a forma de instalar o SASS em sua máquina, pois, a mesma pode ser feita de diferentes formas baseando-se no sistema operacional a ser utilizado.
Para realizar a instalação do SASS, leia a documentação e escolha de acordo com seu sistema operacional, acredito que o processo não deve ser complicado, basta seguir as instruções.
Escrevendo nosso primeiro código
Para escrever códigos utilizando a linguagem (vou chamar de linguagem por questões de facilidade) SASS devemos criar arquivos com duas extensões diferentes, sendo elas: .sass
ou .scss
, agora, com toda certeza do mundo você deve estar se perguntando:
Porque duas extensões diferentes? Qual a diferença entre elas? Qual eu devo utilizar?
Entendendo a diferença de extensões
Basicamente a única diferença entre as extensões .sass
e .scss
é referente a sintaxe, os arquivos .scss
são bem parecidos com os .css
, com chaves e pontos e virgulas, porém, os arquivos .sass
não utilizam chaves ou pontos e virgulas, veja um exemplo:
Abaixo um exemplo de um arquivo utilizando a sintaxe do .sass
:
Agora um arquivo utilizando a sintaxe do .scss
:
Essa é a diferença entre ambos, o modo de escrever, um parece bastante com o CSS normal, enquanto o outro fica um pouco mais diferente, porém, ambos podem utilizar todo o poder que o SASS tem a nos oferecer.
Para continuar o exemplo do post vou abordar a sintaxe do .sass
.
Executando o SASS
Para executar o SASS devemos acessar o terminal (mac ou linux) ou cmd (windows), o mesmo pode ser executado de duas maneiras diferentes:
Compilando
Apenas para compilar um arquivo em SASS podemos utilizar sass ARQUIVO.[sass ou scss]
, seguido por dois pontos (:
) e pelo nome do arquivo de saída, assim o mesmo será compilado para um ou mais arquivos .css
.
Compilando e observando
O exemplo anterior apenas compila e finaliza, para continuar escutando modificações nos arquivos devemos passar o parâmetro --watch
, ficando da seguinte maneira:
Compilando em arquivo mínificado
Podemos também já pedir para o SASS gerar um arquivo .css
mínificado:
Conhecendo os poderes do SASS
Agora vamos começar a ver os poderes que o SASS introduz a linguagem CSS, vou mostrá-los de forma separada, sendo assim, ao término do post você deve ser capaz de mesclá-los e formar seus arquivos.
Variáveis
Um dos grandes poderes do SASS é a utilização de variáveis (eu sei que hoje em dia podemos utilizar tal recurso apenas com CSS puro):
Vejam que devemos seguir a seguinte sintaxe:
Criando a variável
Para criar a variável devemos utilizar o cifrão ou dolar ($
) seguido pelo seu nome, dois pontos (:
) e seu valor:
Lendo variável
Para ler o valor armazenado em uma variável, precisamos apenas informar o seu nome seguido pelo cifrão ou dolar ($
):
Obs: Uma observação sobre as variáveis é que elas possuem escopo, portanto:
Código válido:
Código inválido:
A variável cor
existe apenas no escopo do .botao
.
Nested Rules
Tenho toda certeza do mundo que você já viu, leu ou escreveu um código CSS parecido com:
Veja o tanto de repetições da classe .menu
, será que não existe algo menos verboso? Pois dessa maneira, se um dia precisarmos mudar o nome da classe de nosso menu, deveremos procurar onde estamos à informando e substituí-la pelo seu novo valor.
Pensando nisso o pessoal do SASS criou o Nested Rules, poderíamos substituir o código anterior por:
Como pode ver, declaramos a classe pai apenas uma vez, nesse caso a nossa classe .menu
, depois utilizamos o &
para informar filhos de .menu
, repare que os filhos devem ser informados seguindo a indentação do código, ou seja, deve ser informado dentro de .menu
.
O Nested Rule também pode ser utilizado com pseudo classes (pseudo-class) ou pseudo elementos (pseudo-elements):
Poderíamos facilmente trocar por:
Ainda teríamos o mesmo resultado.
Nested Properties
No exemplo anterior aprendemos a declarar elementos pais e filhos, mas, também podemos seguir a mesma ideia com atríbutos:
Aqui, veja novamente o quanto esse código pode ser melhorado, estamos repetindo muitas vezes a palavra font-
, será que não podemos fazer da mesma maneira, ou seja, definir um pai e informar os filhos? Sim, isso é chamado de Nested Properties:
Ambos os códigos possuem o mesmo resultado visual.
Herdando atributos
Se você conhece linguagens orientadas á objetos, com certeza já deve ter ouvido falar em herança, pois é, com SASS também podemos fazer uso de tal recurso (poder), imagine que temos o esqueleto de um botão seguido por seus estilos:
Esse código irá funcionar sem problemas, porém em nosso HTML será necessário informar duas vezes as classes do botão, uma para o esqueleto e outra para o estilo, conhecido como CSS Orientado à Objetos
Com o SASS podemos facilmente diminuir o código à seguir:
Veja que estamos utilizando @extend
, assim, dizemos para ele herdar todos os atributos de uma determinada classe, em nosso caso, estamos herdando de .botao
.
Agora em nosso HTML, precisamos adicionar apenas uma classe referente aos nossos botões, pois a mesma já possuí todos os atríbutos da herdada:
Importando arquivos
Se você já fez algum site ou práticou um pouco de HTML e CSS, já deve ser deparado com a seguinte situação:
Estamos tendo múltiplos arquivos importados em nosso HTML, com SASS poderíamos possuir os imports em um único arquivo:
Veja que não informamos a extensão .sass
nos imports, porque a extensão é opcional, o próprio SASS sabe que deve importar um arquivo com extensão .sass
ou .scss
.
Para o post não ficar muito extenso vou parar por aqui, nos próximos posts irei abordando mais poderes do SASS.
Caso queira treinar ou praticar a sintaxe do SASS, existe um editor e compilador online chamado SassMeister.
E você, já conhecia o SASS? Não deixe de comentar.