Vamos encarar os fatos: as consultas de mídia podem ser uma dor de cabeça. Elas são difíceis de escrever e tendem a ser muito duplicadas. O Sass inclui alguns recursos úteis que tornam as consultas de mídia mais fáceis de trabalhar. Este artigo mostrará esses truques e como você pode usá-los para simplificar suas folhas de estilo.
O básico
Vamos dar uma olhada em um exemplo simples.
p { font-size: 16px; } @media (min-width: 768px) and (max-width: 1023px) { p { font-size: 18px; } } @media (min-width: 1024px) { p { font-size: 20px; } }
Aqui, definimos o tamanho da fonte dos parágrafos como 16 pixels. Quando a largura da janela de visualização for maior ou igual a 768 pixels e menor ou igual a 1023 pixels, o tamanho da fonte será de 18 pixels. Quando a janela de visualização for maior ou igual a 1024 pixels, o tamanho da fonte será de 20 pixels.
Logo de cara, o senhor deve ficar impressionado com a quantidade de código necessária para fazer algo tão simples como tipografia responsiva. À medida que os projetos aumentam, o estilo acima de escrever consultas de mídia geralmente leva a uma das duas direções:
- As consultas de mídia são codificadas no código e copiadas onde são necessárias. Se quisermos alterar uma consulta de mídia, teremos que fazer isso em vários lugares.
- O projeto é dividido por tamanhos de viewport. É chocante e demorado ir a vários lugares para atualizar os estilos de um único elemento.
Encurtando as coisas
O Sass permite que as variáveis sejam interpoladas. Isso significa que podemos mover nossas consultas de mídia para variáveis e reutilizá-las.
$tablet: "(min-width: 768px) and (max-width: 1023px)"; $desktop: "(min-width: 1024px)"; p { font-size: 16px; } @media #{$tablet} { p { font-size: 18px; } } @media #{$desktop} { p { font-size: 20px; } }
Agora, podemos usar o $tablet
e $desktop
consultas de mídia em qualquer lugar do nosso projeto sem duplicar o código. No entanto, ainda é irritante que nossas consultas de mídia sejam separadas do código que elas estilizam. O pessoal do Sass resolveu esse problema permitindo que as consultas de mídia sejam aninhadas.
$tablet: "(min-width: 768px) and (max-width: 1023px)"; $desktop: "(min-width: 1024px)"; p { font-size: 16px; @media #{$tablet} { font-size: 18px; } @media #{$desktop} { font-size: 20px; } }
Mixins para o resgate
O código acima funciona, mas é um pouco difícil de ler. Podemos limpá-lo usando a função Sass mixins. Mixins são grupos de estilos que podem ser reutilizados em seu código. Um dos recursos interessantes dos mixins é que eles podem usar blocos de conteúdo. Isso nos permite escrever mixins como este:
$tablet-width: 768px; $desktop-width: 1024px; @mixin tablet { @media (min-width: #{$tablet-width}) and (max-width: #{$desktop-width - 1px}) { @content; } } @mixin desktop { @media (min-width: #{$desktop-width}) { @content; } }
Agora, podemos reescrever nosso exemplo acima para usar esses novos mixins.
p { font-size: 16px; @include tablet { font-size: 18px; } @include desktop { font-size: 20px; } }
Não estamos limitados apenas aos tamanhos dos dispositivos. Podemos escrever consultas de mídia para muitas outras coisas úteis, como a consulta de mídia de Chris Coyier consulta de mídia retina ou uma consulta de mídia impressa.
@mixin retina { @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { @content; } } @mixin print { @media print { @content; } }
Conclusão
As consultas de mídia são ótimas e, com o Sass, podem ser ainda melhores. Da próxima vez que usar uma, lembre-se desses truques para ajudar a tornar seu código mais legível e fácil de manter.

Sobre Landon Schropp
Landon é um desenvolvedor, designer e empresário que mora em Kansas City. Ele é o autor do livro Desvendando o Flexbox. Ele é apaixonado por criar aplicativos simples que as pessoas adoram usar.