Segundo a wikipedia (link), Sass (em inglês, “syntactically awesome stylesheets”, ou “folhas de estilo sintaticamente incríveis”) é uma linguagem de script que é interpretada ou compilada em Cascading Style Sheets (CSS).
As principais vantagens de se usar o Sass, são: Variáveis, Herança, Aninhamento, Loops e Mixins.
Variáveis:
Assim como no javascript ou em algumas linguagens de programação. Você pode criar variáveis dentro do Sass usando o caractere “$” para identificá-la.
Sass
$background: "#FFF";
body{
background-color: $background;
}
Css
body{
background-color: #FFF;
}
Herança:
Este é um dos recursos mais úteis do Sass. O uso do @extend permite compartilhar um conjunto de propriedades CSS de um seletor para outro. Isso ajuda a manter seu Sass muito enxuto.
Sass
.botao{
border-color: 2px solid #ccc;
background-color: #fefefe;
color: #333;
}
.error{
@extend .button;
border-color: red;
}
Css
.botao, .error{
border-color: 2px solid #ccc;
background-color: #fefefe;
color: #333;
}
.error{
border-color: red;
}
Aninhamento
Este recurso é super útil para o desenvolvimento de componentes e também de páginas com personalização específicas.
Sass
.accordion{
border: 1px solid #555;
font-size: 14px;
color: #333;
&-header{
background: #CCC;
}
&-body{
background: #FFF;
}
&.is-primary{
border-color: #2b7ace;
.accordion-header{
background: #2b7ace;
color: #FFF;
}
}
}
Css
.accordion {
border: 1px solid #555;
font-size: 14px;
color: #333;
}
.accordion-header {
background: #CCC;
}
.accordion-body {
background: #FFF;
}
.accordion.is-primary {
border-color: #2b7ace;
}
.accordion.is-primary .accordion-header {
background: #2b7ace;
color: #FFF;
}
Loops
O Sass suporta os loops @each, @for e @while. Como nosso foco aqui é dar uma introdução básica às funcionalidades do Sass, vamos mostrar somente o loop @each.
Usando o exemplo do componente “.accordion” que vimos na sessão “aninhamento”, vamos supor que você precise renderizar esse componente usando as cores do nosso tema default (.is-primary, .is-success, .is-danger, etc…). Vamos usar um loop @each para criar as classes correspondentes para cada cor.
Sass
$cores:(
default: #ccc,
primary: #2b7ace,
success: #7abf00
);
.accordion{
border: 1px solid #555;
font-size: 14px;
color: #333;
@each $key, $value in $cores {
&.is-#{$key}{
.accordion-header{
background-color: $value;
color: #FFF;
}
}
}
}
Css
.accordion {
border: 1px solid #555;
font-size: 14px;
color: #333;
}
.accordion.is-default .accordion-header {
background-color: #cccccc;
color: #FFF;
}
.accordion.is-primary .accordion-header {
background-color: #2b7ace;
color: #FFF;
}
.accordion.is-success .accordion-header {
background-color: #7abf00;
color: #FFF;
}
Mixins
Os mixins funcionam com o comportamento semelhante a funções, você pode utilizá-la para otimizar aqueles trechos de código que ficam replicados no seu código.
Sass
@mixin sprite($posX:0, $posY: 0){
background-image: url(sprite.jpg);
background-repeat: no-repeat;
background-position: $posX $posY;
}
.user-avatar{
@include sprite(-20px, 0);
}
Css
.user-avatar{
background-image: url(sprite.jpg);
background-repeat: no-repeat;
background-position: -20px 0;
}