CSS rápido e divertido com Sass

Update: Criei um repositório no Github (na verdade ele está lá faz tempo, só esqueci de mencionar aqui #fail) com alguns mixins úteis, como CSS Reset para HTML 5, border-radius e opacity.

Há algumas semanas conheci o Sass (Syntactically Awesome Stylesheets) através de um projeto em que participei. Fui atrás, descobri como funciona e hoje vou contar um pouco da experiência com mais essa maravilha.

Sass é uma metalinguagem, implementada em cima do CSS, que facilita – muito – o desenvolvimento de estilos para documentos. Ele deixa os stylesheets mais limpos, estruturados e gerenciáveis. Sass torna divertida a tarefa de criar CSS, implementando regras de aproveitamento de código, variáveis, mixins (pequenas funções) e muito mais. Tudo numa sintaxe bem mais legível e organizada que CSS comum.

Como exemplo, veja um CSS comum:

1
2
3
4
5
6
7
8
9
10
11
12
13
#id_do_elemento {
    width: 200px;
    background: blue;
    font-family: Verdana,Arial,Helvetica;
    font-size: 2em;
    font-weight: bold;
}

#id_do_elemento .filho {
    background: red;
    font-size: 1em;
    padding: 10px;
}

E agora o mesmo, escrito com SASS:

1
2
3
4
5
6
7
8
9
10
11
12
#id_do_elemento
    width: 200px
    background: blue
    font:
        family: Verdana,Arial,Helvetica
        size: 2em
        weight: bold

.filho
    background: red
    font-size: 1em
    padding: 10px

O Sass também suporta variáveis e mixins, veja um exemplo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Variáveis
!cor_de_fundo = #f0f0f0
!cor_da_borda = #aaa
!margem = 30px 20px

// Mixin para bordas arredondadas
=border-radius( !radius = 10px )
    :border-radius = !radius
    :-webkit-border-radius = !radius
    :-moz-border-radius = !radius

#meu_elemento
    :background = !cor_de_fundo
    :border = 1px "solid" !cor_da_borda
    :margin = !margem
    padding: 10px
    +border-radius(20px)

    span
        :background = !cor_da_borda
        :border = 1px "solid" (!cor_de_fundo / 1.4)

O resultado do código acima será…:

1
2
3
4
5
6
7
8
9
10
11
12
#meu_elemento {
    background: #f0f0f0;
    border: 1px solid #aaaaaa;
    margin: 30px 20px;
    padding: 10px;
    border-radius: 20px;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px; }

    #meu_elemento span {
        background: #aaaaaa;
        border: 1px solid #ababab; }

Perfeito pra quem gosta da “doutrina” DRY, né? :)

A sintaxe é muito parecida com CSS, o que deixa a curva de aprendizagem muito baixa. Você aprende a usar o Sass em poucos minutos, a única parte onde complica é a indentação – que garante (praticamente obriga você a escrever) um código muito mais limpo e legível.

Instalação

Pra instalar, você precisa do Ruby e da gem do Haml (que será assunto de um futuro post):

1
gem install haml

Agora você já pode converter seus arquivos CSS para Sass ou vice-versa:

1
2
3
4
5
# De CSS para Sass
css2sass estilo.css estilo.sass

# Compila um arquivo Sass (gera o CSS final)
sass estilo.sass estilo.css

Integração com o Rails

Agora vem a melhor parte: a integração do Sass com o Ruby on Rails. A gem do Haml (e consequentemente do Sass) gera automaticamente os arquivos CSS compilados a partir de um arquivo Sass. Pra isso, é só gastar alguns segundos configurando a sua aplicação. No Rails <= 2, adicione no seu arquivo environment.rb o seguinte:

1
config.gem 'haml'

Já no Rails 3, adicione o seguinte no arquivo Gemfile:

1
gem "haml"

Não há nenhuma perda de performance, já que os arquivos CSS compilados só são gerados novamente quando houver alguma modificação no Sass original. Resumindo a história, Sass é um CSS melhor, mais gerenciável e reaproveitável. Usarei sempre que possível e mais que recomendo. :)

Deixe um comentário

*

Antes de comentar, saiba que todos os comentários são moderados. Portanto, ofensas pessoais não serão toleradas. E, por favor, evite palavrões desnecessários.

As opiniões expostas nos comentários não refletem as do autor do blog.