Nova sintaxe para consultas de mídia de intervalo

Descubra como essa nova sintaxe pode simplificar as consultas de mídia.

As consultas de mídia ativaram o design responsivo, e os recursos de intervalo que permitem testar os tamanhos mínimo e máximo da janela de visualização são usados por cerca de 80% dos sites que usam consultas de mídia. A especificação de consultas de mídia do nível 4 inclui uma sintaxe melhorada para essas consultas de intervalo.

Compatibilidade com navegadores

  • Chrome: 104
  • Borda: 104.
  • Firefox: 102.
  • Safari: 16.4.

Origem

Os exemplos a seguir mostram como ele pode otimizar suas consultas.

Um teste típico de consulta de mídia para uma largura mínima da viewport seria escrito da seguinte maneira:

@media (min-width: 400px) {
  // Styles for viewports with a width of 400 pixels or greater.
}

A nova sintaxe permite o uso de um operador de comparação:

@media (width >= 400px) {
  // Styles for viewports with a width of 400 pixels or greater.
}

Teste para uma largura máxima:

@media (max-width: 30em) {
  // Styles for viewports with a width of 30em or less.
}

E a versão que usa a sintaxe do nível 4:

@media (width <= 30em) {
  // Styles for viewports with a width of 30em or less.
}

Essa sintaxe tem o potencial de simplificar as consultas, principalmente ao testar entre duas larguras. No exemplo a seguir, a consulta de mídia testa uma viewport com largura mínima de 400 px e largura máxima de 600 px.

@media (min-width: 400px) and (max-width: 600px) {
  // Styles for viewports between 400px and 600px.
}

Isso pode ser reescrito na nova sintaxe como:

@media (400px <= width <= 600px )  {
  // Styles for viewports between 400px and 600px.
}

O recurso que você está testando, neste caso width, fica entre os dois valores.

Além de tornar as consultas de mídia menos detalhadas, a nova sintaxe tem a vantagem da precisão. As consultas min- e max- incluem os valores especificados, por exemplo, testes min-width: 400px para uma largura de 400 px ou mais. A nova sintaxe permite que você seja mais explícito sobre o que quer dizer e evita possíveis conflitos de consultas.

Para usar a nova sintaxe de intervalo e considerar os navegadores que ainda não a implementaram, há um plug-in do PostCSS que vai reescrever a nova sintaxe para a antiga nas folhas de estilo.