A media queries abriu a possibilidade de usar determinada folha de estilo (CSS) segundo o tamanho e/ou tipo do disposito na qual o HTML é apresentado.

A sintaxe é relativamente simples, começamos com @media seguido de uma expressão, por exemplo, (min-width: 640px). Dentro desse “espaço”, nos podemos escrever as regras CSS.

No exemplo abaixo nós ensinamos ao navegador a aplicar a regra CSS quando a tela do dispositivo ultrapassar a largura de 640 pixels. Em outras palavras, mude a cor de fundo da tag body para verde (green) quando a tela for maior que o temanho mínimo definido, no caso 640px.

@media (min-width: 640px) {
    body {
        background: green;
    }
}

Na parte na qual eu me referi como sendo a “expressão”, na verdade chama-se media-feature, é para você pensar como se fosse realmente uma expressão. Pense na estrutura de controle if, é mais ou menos isso…

//
// se width for menor ou igual a 640 pixels,
//
if (width <= 640px) {
    // ... use esta regra:
    body {
        background: green;
    }
}

A definição formal seria “Media queries consistem de um media type e podem, a partir de uma especificação CSS3, contendo uma ou mais expressões, expressa em media features, que determinam ou verdadeiro ou falso. Os resultados da query são verdadeiros se o media type especificado na media query corresponde ao tipo do documento exibido no dispositivo e todas as expressões na media query são verdadeiras.”

  • media query ?
  • media type ?
  • media feature ?

A imagem abaixo vai nos ajudar a entender…

Nós podemos usar tanto a largura da tela como a altura. Mas eu ainda não encontrei um caso de uso para a altura da tela.

Usamos o prefixo “min-“ ou “max-“ para expressar as restrições “menor ou igual” ou “maior ou igual”, respectivamente:

  • min-width (menor ou igual a largura da tela)
  • max-widht (maior ou igual a largura da tela)

Dito isso, podemos concluir que as media queries desenpenham um papel fundamental na técnica do design resonsivo. Pois podemos organizar nossa CSS conforme o tamanho da tela, exemplo:

/* mobile */
@media (min-width: 320px) {

}
/* tablets */
@media (min-width: 768px) {

}
/* desktop */
@media (min-width: 1024px) {

}

Operadores Lógicos

Podemos utilizar and, only e not.

Breakpoints

Os breakpoints são os pontos onde o layout deve quebrar. Não há um senso comum extato, mas há medidas que foram popularizadas por alguns frameworks como o Bootstrap, por exemplo.

type

Mas não é so tamanho que ela permite controlar. Podemos definir o tipo de media que sofrerá detreminada estilização com CSS. Fazemos isso com