Pagina inicial » Codificação » Um guia simples e fácil de entender o Sass

    Um guia simples e fácil de entender o Sass

    Um tempo atrás, Thoriq Firdaus escreveu um ótimo artigo sobre como começar a usar o Sass, que mostrou como instalar e usar essa linguagem de pré-processamento CSS altamente útil (você pode querer dar uma olhada, você sabe, para começar).

    Neste artigo, pensei em dar a você mais detalhes sobre o que você pode fazer com o Sass e como os desenvolvedores o usam todos os dias para criar um código CSS melhor e mais modular. Pule para a seção que você deseja:

    • Ferramentas do Comércio
    • Variáveis
    • Aninhamento
    • Estendendo conjuntos de regras
    • Mixins
    • Seletores de espaço reservado
    • Operações
    • Funções

    Ferramentas do Comércio

    Thoriq mostrou como você pode usar o Sass na linha de comando usando o sass --watch comando.

    Se você preferir ferramentas GUI, você pode usar meu aplicativo favorito, o Codekit, uma ferramenta de desenvolvimento web para compilar o Sass, concatenar, autoprefixing e muito mais. Prepros é outra aplicação muito capaz que pode ser usada em todos os sistemas. Ambos são aplicações pagas mas valem a pena se você for usá-los a longo prazo.

    Se você quer apenas experimentar o Sass sem pagar por nada você pode usar o terminal, ou Koala (aqui está a nossa análise), um aplicativo gratuito rico em recursos de plataforma cruzada, que pode manter o seu terreno contra as contrapartes premium.

    Variáveis

    Uma das primeiras coisas que você precisa para envolver sua cabeça é variáveis. Se você vem de um PHP ou outro fundo de linguagem de programação semelhante, isso será uma segunda natureza para você. Variáveis ​​são para armazenar pedaços de informação reutilizáveis, como um valor de cor por exemplo:

     $ primary_color: # 666666; .button color: $ primary_color;  .important color: $ primary_color;  

    Isso pode não parecer tão útil aqui, mas imagine ter 3.000 linhas de código. Se o esquema de cores mudar, você precisará substituir cada valor de cor no CSS. Com Sass você pode apenas modificar o valor do $ primary_color variável e ser feito com isso.

    Variáveis ​​são usadas para armazenar nomes de fontes, tamanhos, cores e uma série de outras informações. Para projetos maiores, talvez valha a pena extrair todas as suas variáveis ​​em um arquivo separado (vamos ver como isso é feito em breve). O que isso permite que você faça é recolorir todo o seu projeto e alterar as fontes e outros aspectos-chave sem nunca tocar em regras reais de CSS. Tudo que você precisa fazer é modificar algumas variáveis.

    Aninhamento

    Outra característica básica que o Sass lhe dá é a capacidade de aninhar regras. Vamos supor que você esteja construindo um menu de navegação. Você tem um nav elemento que contém uma lista não ordenada, itens de lista e links. Em CSS você pode fazer algo assim:

     #header nav / * Regras para a área de navegação * / #header nav ul / * Regras para o menu * / #header nav li / * Regras para itens de lista * / #header nav a / * Rules para links * / 

    Nos seletores, estamos nos repetindo muito. Se os elementos têm raízes comuns, podemos usar o aninhamento para escreva nossas regras de uma maneira muito mais limpa.

    Veja como o código acima pode aparecer no Sass:

     #header nav / * Regras para a área de navegação * / ul / * Regras para o menu * / li / * Regras para itens de lista * / a / * Regras para links * / 

    O aninhamento é extremamente útil porque torna stylesheets (muito) mais legível. Ao usar o aninhamento junto com o recuo adequado, você pode obter estruturas de código altamente legíveis, mesmo se você tiver uma boa quantidade de código.

    Uma desvantagem do aninhamento é que ele pode levar a uma especificidade desnecessária. No exemplo acima, referi-me a links com #header nav a. Você também pode usar #header nav ul li a o que provavelmente seria demais.

    No Sass, é muito mais fácil ser muito específico, pois tudo que você precisa fazer é aninhar suas regras. O que se segue é muito menos legível e bastante específico.

     #header nav / * Regras para a área de navegação * / ul / * Regras para o menu * / li / * Regras para itens de lista * / a / * Regras para links * / 

    Estendendo conjuntos de regras

    A extensão será familiar se você estiver trabalhando com linguagens orientadas a objetos. É melhor entendido através de um exemplo, vamos criar 3 botões que são pequenas variações uns dos outros.

     .botão display: inline-block; cor: # 000; fundo: # 333; raio de fronteira: 4 px; preenchimento: 8 px 11 px;  .button-primary @extend .button; background: # 0091C2 .button-small @extend .button; tamanho da fonte: 0.9em; preenchimento: 3px 8px;  

    o .botão-primário e .botão pequeno classes todos estendem o .botão classe que significa que eles assumem todas as suas propriedades e, em seguida, definem seus próprios.

    Isso é imensamente útil em muitas situações em que variações de um elemento podem ser usadas. Mensagens (alerta / sucesso / erro), botões (cores, tamanhos), tipos de menu e assim por diante podem usar a funcionalidade de extensão para uma grande eficiência CSS.

    Uma ressalva de extensão é que eles não funcionam em consultas de mídia como você esperaria. Isso é um pouco mais avançado, mas você pode ler tudo sobre esse comportamento em Noções básicas sobre seletores de espaços reservados - seletores de espaço reservado são tipos especiais de extensão sobre os quais falaremos em breve.

    Mixins

    Mixins são outro recurso favorito de usuários pré-processadores. Mixins são conjuntos de regras reutilizáveis ​​- perfeitos para regras específicas de fornecedores ou para regras CSS longas.

    Que tal criar uma regra de transição para elementos de foco:

     @mixing hover-effect -webkit-transition: cor de fundo 200ms; -moz-transition: cor de fundo 200ms; -o-transição: cor de fundo 200ms; transição: cor de fundo 200ms;  um @include hover-effect;  .button @include hover-effect;  

    Mixins também permitem que você use variáveis ​​para definir os valores dentro do mixin. Poderíamos reescrever o exemplo acima para nos dá controle sobre o tempo exato da transição. Podemos querer que os botões façam a transição um pouco mais devagar, por exemplo.

     @mixin hover-effect ($ speed) -webkit-transition: cor de fundo $ speed; -moz-transition: cor de fundo $ speed; -o-transição: cor de fundo $ velocidade; transição: background-color $ speed;  um @include hover-effect (200ms);  .button @include hover-effect (300ms);  

    Seletores de espaço reservado

    Os seletores de espaço reservado foram introduzidos com o Sass 3.2 e solucionaram um problema que poderia causar um pouco de inchaço em seu código CSS gerado. Dê uma olhada neste código que cria mensagens de erro:

     .mensagem font-size: 1.1em; preenchimento: 11px; largura da borda: 1px; estilo de borda: sólido;  .message-danger @extend .message; fundo: # C20030; cor: #fff; cor da borda: # A8002A;  .message-success @extend .message; fundo: # 7EA800; cor: #fff; cor da borda: # 6B8F00;  

    É mais provável que a classe da mensagem nunca seja usada em nosso HTML: ela foi criado para ser estendido, não usado como é. Isso causa um pouco de inchaço no seu CSS gerado. Para tornar seu código mais eficiente, você pode usar o seletor de espaço reservado, indicado por um sinal de porcentagem:

     % message font-size: 1.1em; preenchimento: 11px; largura da borda: 1px; estilo de borda: sólido;  .message-danger @extend% button; fundo: # C20030; cor: #fff; cor da borda: # A8002A;  .message-success @extend% button; fundo: # 7EA800; cor: #fff; border-color: # 6D9700;  

    Nesta fase, você pode estar se perguntando qual é a diferença entre estender e mixins. Se você usa placeholders, eles se comportam como um mixin sem parâmetros. Isso é verdade, mas a saída no CSS é diferente. A diferença é que regras duplicadas de mixins enquanto os placeholders garantirão que as mesmas regras compartilhem seletores, resultando em menos CSS no final.

    Operações

    É difícil resistir ao trocadilho aqui, mas vou me abster de qualquer piada médica por enquanto. Os operadores permitem que você faça alguma matemática no seu código CSS e pode ser bastante útil. O exemplo no guia Sass é perfeito para mostrar isso:

     .container largura: 100%;  artigo float: left; largura: 600px / 960px * 100%;  aparte float: certo; largura: 300px / 960px * 100%;  

    O exemplo acima cria um sistema de grade baseado em 960px com o mínimo de problemas. Ele irá compilar bem para o seguinte CSS:

     .container largura: 100%;  artigo float: left; largura: 62,5%;  aparte float: certo; largura: 31,25%;  

    Um grande uso que encontro para as operações é realmente misturar cores. Se você der uma olhada na mensagem de sucesso Sass acima, não está claro se a cor do fundo e da borda tem algum tipo de relacionamento. Ao subtrair um tom de cinza, podemos escurecer a cor, tornando o relacionamento visível:

     $ primary: # 7EA800; .message-success @extend% button; plano de fundo: $ primary; cor: #fff; border-color: $ primary - # 111;  

    Quanto mais clara for a cor subtraída, mais escura será a tonalidade resultante. Quanto mais clara a cor adicionada, mais claro é o tom resultante.

    Funções

    Há um grande número de funções a serem usadas: funções numéricas, funções de string, funções de lista, funções de cor e muito mais. Dê uma olhada na longa lista na documentação do desenvolvedor. Vou dar uma olhada em um casal aqui só para mostrar como eles funcionam.

    o aliviar e escurecer função pode ser usada para alterar a luminosidade de uma cor. Isso é melhor do que subtrair sombras, torna tudo ainda mais modular e óbvio. Dê uma olhada no nosso exemplo anterior usando a função de escurecimento.

     $ primary: # 7EA800; .message-success @extend% button; plano de fundo: $ primary; cor: #fff; border-color: escurecer ($ primário, 5);  

    O segundo argumento da função é a porcentagem de escurecimento necessária. Todas as funções possuem parâmetros; dê uma olhada na documentação para ver o que eles são! Aqui estão algumas outras funções de cores auto-explicativas: desaturar, saturar, invertido, grayscale.

    o ceil função, assim como no PHP, retorna um número arredondado para o próximo número inteiro. Isso pode ser usado ao calcular larguras de coluna ou se você não quiser usar muitas casas decimais no CSS final.

     .title font-size: ceil ($ heading_size * 1,3314);  

    visão global

    Os recursos do Sass nos dão grande poder para escrever melhor CSS com menos esforço. O uso adequado de mixins, extensões, funções e variáveis ​​tornará nossas folhas de estilo mais sustentáveis, mais legíveis e mais fáceis de escrever.

    Se você estiver interessado em outro pré-processador CSS similar, sugiro dar uma olhada no LESS (ou confira nosso guia para iniciantes) - o principal subjacente é praticamente o mesmo.!