O texto a seguir é uma tradução livre e autorizada do excelente post “10 Sass (SCSS) mixins you should be using in your projects”, de Jamie Wright. É mostrado dez dicas de mixins feitos em Sass que ele usa em seu trabalho e que com certeza são códigos muito úteis para qualquer dev front-end que usa o Sass como pré-processador.
Primeiramente, obrigado Jamie pelo post. E muito obrigado também por ter permitido que eu fizesse essa tradução. Ah...Importante frisar que a tradução não é literal, adaptei algumas coisas para pt-br.
Se você quer aprender esse pré-processador CSS na prática, do zero, dá uma olhada no meu livro de Sass, publicado pela Casa do Código. E há também meu curso de Sass na Alura. Agora vamos a lista de mixins!
1 - Centralizar
Para centralizar rapidamente um elemento de bloco sem ter que se preocupar se há uma `margin-top` ou `margin-bottom` já aplicada:
Então para usar este mixin você poderia escrever o código abaixo e sua `div` teria uma proporção comumente utilizada por vídeos (16:9), como do Youtube:
div { @include responsive-ratio(16,9); }
4 - Triângulos em CSS
Este mixin resolve toda a trabalheira de criar triângulo em CSS, tudo isso sem imagens. Basta você especificar a cor, o tamanho e a direção que vai sair do elemento, e pronto!
Elimine a dor de definir estilos para uma fonte (este mixin assume que você já incluiu a fonte). Defina a fonte de fallback uma vez e nunca mais se preocupe com isso de novo.
Essa é pra economizar tempo! Você pode usar valores em pixel mas nós temos breakpoints padrões definidos que também funcionam, economizando tempo enquanto você vai deixando seus próprios breakpoints mais consistentes.
Tecnicamente este aqui é uma função, mas eu senti que valia colocá-lo na lista, já que é muito fácil perder o controle sobre os valores de `z-index` quando se trabalha com vários arquivos diferentes. Então nós criamos este mixin para que pudéssemos colocar esses valores em um só lugar para facilitar a manutenção. Apenas coloque esse snippet no seu arquivo variaveis.scss ou configs.scss (precisa ser importando antes de qualquer outro arquivo que faz referência ao z-index, claro).
@function z($name) { @if index($z-indexes, $name) { @return (length($z-indexes) - index($z-indexes, $name)) + 1; } @else { @warn'There is no item "#{$name}" in this list; choose one of: #{$z-indexes}'; @return null; } } $z-indexes: ( "outdated-browser", "modal", "site-header", "page-wrapper", "site-footer" );
Aí sempre que você for usar um valor de z-index, nomeie-o igual a sua classe e adicione no arquivo de variáveis/configs, como no código abaixo. Você nunca mais vai ter que esquentar a cabeça com um `z-ndex: 9999999`.
.site-header { z-index: z('site-header'); }
9 - Hardware
Simples e eficaz para quando você precisa ligar a aceleração de hardware para alguma animação, deixando tudo rápido, elegante e sem lag.
Truncar um elemento não é tão simples como deveria ser, mas pode ser com este mixin. O que significa que quando você incluí-lo terá apenas que especificar um limite com um valor de `max-width`, e ser feliz!
Nós temos muito mais de onde veio esses, desde adicionar um anti-aliasing (suavização) em texto, ou remover a opção de selecionar texto em um elemento (útil para menus ou botões etc). Você pode achar todos eles no nosso arquivo de mixins (que faz parte do Engage Front End Baseplate lá no Github).